Time of Update: 2017-01-19
過了這麼久,discuz論壇的問題還是困擾著很多網友,其實從各論壇裡看到的問題總結出來,很關鍵的一點都是因為沒有將資料表引擎轉成InnoDB導致的,discuz在並發稍微高一點的環境下就表現的非常糟糕,產生大量的鎖等待,這時候如果把資料表引擎改成InnoDB的話,我相信會好很多。這次就寫個掃盲貼吧。1. 啟用innodb引擎,並配置相關參數#skip-innodbinnodb_additional_mem_pool_size = 16M
Time of Update: 2017-01-19
MySQL日誌主要包含:錯誤記錄檔、查詢日誌、慢查詢日誌、交易記錄、二進位日誌;日誌是mysql資料庫的重要組成部分。記錄檔中記錄著mysql資料庫運行期間發生的變化;也就是說用來記錄mysql資料庫的用戶端串連狀況、SQL語句的執行情況和錯誤資訊等。當資料庫遭到意外的損壞時,可以通過日誌查看檔案出錯的原因,並且可以通過記錄檔進行資料恢複。錯誤記錄檔在mysql資料庫中,錯誤記錄檔功能是預設開啟的。並且,錯誤記錄檔無法被禁止。預設情況下,錯誤記錄檔儲存在mysql資料庫的資料檔案中。錯誤記錄檔檔
Time of Update: 2017-01-19
聯合索引又叫複合索引。對於複合索引:Mysql從左至右的使用索引中的欄位,一個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行尋找,但不支援 b,c進行尋找 .當最左側欄位是常量引用時,索引就十分有效。兩個或更多個列上的索引被稱作複合索引。利用索引中的附加列,您可以縮小搜尋的範圍,但使用一個具有兩列的索引
Time of Update: 2017-01-19
>>>database<<<1. 修改 protected/config/main.php去掉mysql資料庫連接方式的注釋,並且修改使用者名稱,密碼以及串連的資料庫。2. 建立 protected/tests/unit/DbTest.php內容如下:<?phpclass DbTest extends CTestCase{ public function testConnection() {
Time of Update: 2017-01-19
下面是我們經常會用到且非常有用的MySQL命令。下面你看到#表示在Unix命令列下執行命令,看到mysql>表示當前已經登入MySQL伺服器,是在mysql用戶端執行mysql命令。登入MySQL,如果串連遠端資料庫,需要用-h指定hostname。登入MySQL,如果串連遠端資料庫,需要用-h指定hostname。# [mysql dir]/bin/mysql -h hostname -u root -p建立一個資料庫。mysql> create database
Time of Update: 2017-01-19
show profile是由Jeremy Cole捐獻給MySQL社區版本的。預設的是關閉的,但是會話層級可以開啟這個功能。開啟它可以讓MySQL收集在執行語句的時候所使用的資源。為了統計報表,把profiling設為1 mysql> SET profiling = 1; 之後在運行一個查詢mysql> SELECT COUNT(DISTINCT actor.first_name) AS cnt_name, COUNT(*) AS cnt-> FROM
Time of Update: 2017-01-19
MySQL 安裝Linux/UNIX上安裝MysqlLinux平台上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址: MySQL - MySQL伺服器。你需要該選項,除非你只想串連運行在另一台機器上的MySQL伺服器。 MySQL-client - MySQL 用戶端程式,用於串連並操作Mysql伺服器。 MySQL-devel - 庫和包含檔案,如果你想要編譯其它MySQL用戶端,例如Perl模組,則需要安裝該RPM包。 MySQL-shared -
Time of Update: 2017-01-19
本文執行個體總結了MySQL常用的各種操作命令。分享給大家供大家參考,具體如下:Mysql安裝目錄資料庫目錄/var/lib/mysql/設定檔/usr/share/mysql(mysql.server命令及設定檔)相關命令/usr/bin(mysqladmin mysqldump等命令)啟動指令碼/etc/init.d/mysql(啟動指令檔mysql的目錄)系統管理串連MySQL格式: mysql -h 主機地址 -u使用者名稱 -p使用者密碼例 1:串連到本機上的 MySQL。複製代碼
Time of Update: 2017-01-19
一、MySQL的相關概念介紹MySQL 為關係型資料庫(Relational Database Management System), 這種所謂的"關係型"可以理解為"表格"的概念, 一個關係型資料庫由一個或數個表格組成, 如圖所示的一個表格:表頭(header): 每一列的名稱;列(row): 具有相同資料類型的資料的集合;行(col): 每一行用來描述某個人/物的具體資訊;值(value): 行的具體資訊, 每個值必須與該列的資料類型相同;鍵(key): 表中用來識別某個特定的人\物的方法,
Time of Update: 2017-01-19
學習如何管理和導航MySQL資料庫和表是要掌握的首要任務之一,下面的內容將主要對MySQL的資料庫和表的一些常用命令進行總結,一些我們不得不掌握的命令,一些信手拈來的命令。一、處理資料庫1、查看資料庫擷取伺服器上的資料庫列表通常很有用。執行show databases;命令就可以搞定。mysql> show databases;2、建立資料庫mysql> create database db_test;Query OK, 1 row affected (0.00
Time of Update: 2017-01-19
MYSQL的profiling功能要在Mysql版本5.0.37以上才能使用。查看profile是否開啟mysql> show variables like '%profil%';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| profiling | OFF | --開啟SQL語句剖析功能
Time of Update: 2017-01-19
線程池是Mysql5.6的一個核心功能,對於伺服器應用而言,無論是web應用服務還是DB服務,高並發請求始終是一個繞不開的話題。當有大量請求並發訪問時,一定伴隨著資源的不斷建立和釋放,導致資源使用率低,降低了服務品質。線程池是一種通用的技術,通過預先建立一定數量的線程,當有請求達到時,線程池分配一個線程提供服務,請求結束後,該線程又去服務其他請求。
Time of Update: 2017-01-19
自從2012年來,維基百科已經開始從MySQL遷移到MariaDB的過程,是維基媒體資料庫結構描述變革的一個重大裡程碑,將英文和德文版的維基百科資料庫Wikidata移植到了MariaDB 5.5版本上。在過去幾年中,維基百科一直使用 Facebook 的 MySQL 5.1 衍生版本 作為我們的產品資料庫,構建版本號碼是r3753。我們很高興該產品的效能表現,Facebook 有著全世界最棒的資料庫工程師,他們為 MySQL 生態系統帶去了很多改進。現在 MariaDB
Time of Update: 2017-01-19
操作資料庫時候難免會因為“大意”而誤操作,需要快速恢複的話通過備份來恢複是不太可能的,因為需要還原和binlog差來恢複,等不了,很費時。這裡先說明下因為Delete 操作的恢複方法:主要還是通過binlog來進行恢複,前提是binlog_format必須是Row格式,否則只能通過備份來恢複資料了。方法:條件:開啟Binlog,Format為Row。步驟:1.通過MySQL內建工具mysqlbinlog 指定匯出操作的記錄:mysqlbinlog --no-defaults
Time of Update: 2017-01-19
NULL值的概念是造成SQL的新手的混淆的普遍原因,他們經常認為NULL是和一個Null 字元串''的一樣的東西。不是這樣的!例如,下列語句是完全不同的: mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES ("");兩個語句把值插入到phone列,但是第一個插入一個NULL值而第二個插入一個Null 字元串。第一個的含義可以認為是“電話號碼不知道”
Time of Update: 2017-01-19
MySQL中,有兩種方式產生有序結果集:一是使用filesort,二是按索引順序掃描。利用索引進行排序操作是非常快的,而且可以利用同一索引同時進行尋找和排序操作。當索引的順序與ORDER BY中的列順序相同且所有的列是同一方向(全部升序或者全部降序)時,可以使用索引來排序。如果查詢是串連多個表,僅當ORDER
Time of Update: 2017-01-19
OR、in和union all 查詢效率到底哪個快?網上很多的聲音都是說union all 快於 or、in,因為or、in會導致全表掃描,他們給出了很多的執行個體。但真的union all真的快於or、in?EXPLAIN SELECT * from employees where employees.first_NAME ='Georgi' UNION ALL SELECT * from employees where employees.first_NAME
Time of Update: 2017-01-19
主鍵與外鍵的關係,通俗點兒講,我現在有一個論壇,有兩張表,一張是主貼 thread,一張是回帖 reply先說說主鍵,主鍵是表裡面唯一識別記錄的欄位,一般是文章id,體現在訪問的時候,例如是thread.php?id=1 表示我要訪問的是文章id是1 的文章~再來說說外鍵,當我們刪除某個文章的時候,需要執行另一個操作,就是刪除所有回帖,如果正常情況下,我們需要執行兩次delete操作(thread和 reply),這時候如果存在外鍵,例如,在reply
Time of Update: 2017-01-19
1、聲明主鍵的方法:您可以在建立表的時候就為表加上主鍵,如:CREATE TABLE tbl_name ([欄位描述省略...], PRIMARY KEY(index_col_name));也可以更新表結構時為表加上主鍵,如:ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);/*建立一個qq表,將qq_id設為主鍵,且沒有對其進行NOT NULl約束*/create table qq(qq_id int(10),nick_name
Time of Update: 2017-01-19
在MySQL中,InnoDB引擎類型的表支援了外鍵約束。外鍵的使用條件:1.兩個表必須是InnoDB表,MyISAM表暫時不支援外鍵(據說以後的版本有可能支援,但至少目前不支援);2.外鍵列必須建立了索引,MySQL 4.1.2以後的版本在建立外鍵時會自動建立索引,但如果在較早的版本則需要顯示建立;3.外鍵關係的兩個表的列必須是資料類型相似,也就是可以相互轉換類型的列,比如int和tinyint可以,而int和char則不可以;外鍵的好處:可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作;