1. 程式人生 > 其它 >MySQL工作中常用的引數

MySQL工作中常用的引數

基本引數配置

datadir:指定mysql的資料目錄位置,用於存放mysql資料庫檔案、日誌檔案等。

  配置示例:datadir=D:/wamp/mysqldata/Data

default-character-set:mysql伺服器預設字符集設定。

  配置示例:default-character-set=utf8

skip-grant-tables:當忘記mysql使用者密碼的時候,可以在mysql配置檔案中配置該引數,跳過許可權表驗證,不需要密碼即可登入mysql。

關於慢查詢的配置資訊

log_slow_queries ON/OFF慢查詢sql記錄

slow_lauch_time 預設為2秒 規定查詢時長超過多久算是慢查詢

slow_query_log ON/OFF 開啟慢查詢記錄日誌

slow_query_log_file 慢查詢記錄日誌檔案的存放路徑

日誌相關

log-error:指定錯誤日誌檔名稱,用於記錄當mysqld啟動和停止時,以及伺服器在執行過程中發生任何嚴重錯誤時的相關資訊。

  配置示例:log-error="WJT-PC.err"(預設在mysql資料目錄下)

log-bin:指定二進位制日誌檔名稱,用於記錄對資料造成更改的所有查詢語句。

  配置示例:log-bin="WJT-PC-bin.log"(預設在mysql資料目錄下)

binlog-do-db:指定將更新記錄到二進位制日誌的資料庫,其他所有沒有顯式指定的資料庫更新將被忽略,不記錄在日誌中。

  配置示例:binlog-do-db=db_name

binlog-ignore-db:指定不將更新記錄到二進位制日誌的資料庫,其他沒有顯式忽略的資料庫都將進行記錄。

  配置示例:binlog-ignore-db=db_name如果想記錄或忽略多個數據庫,可以對上面兩個選項分別使用多次。

sync-binlog:指定多少次寫日誌後同步磁碟。

  配置示例:sync-binlog=N

general-log:是否開啟查詢日誌記錄。

  配置示例:general-log=1

general_log_file:指定查詢日誌檔名,用於記錄所有的查詢語句。

  配置示例:general_log_file="WJT-PC.log"(預設在mysql資料目錄下)

slow-query-log:是否開啟慢查詢日誌記錄。

  配置示例:slow-query-log=1

slow_query_log_file:指定慢查詢日誌檔名稱,用於記錄消耗時間較長的查詢語句。

  配置示例:slow_query_log_file="WJT-PC-slow.log"(預設在mysql資料目錄下)

long_query_time:設定慢查詢的時間,超過這個時間的查詢語句才記錄日誌。

  配置示例:long_query_time=10(單位:秒)

log-slow-admin-statements:是否將慢管理語句(例如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE)寫入慢查詢日誌。

儲存引擎相關

default-table-type:設定mysql的預設儲存引擎。

innodb_data_home_dir:InnoDB引擎的共享表空間資料檔案根目錄。若沒有設定,則使用mysql的datadir目錄作為預設目錄。

innodb_data_file_path:單獨指定共享表空間資料檔案的路徑與大小。資料檔案的完整路徑由innodb_data_home_dir與這裡配置的值組合起來,檔案大小以MB單位指定。

  配置示例:innodb_data_home_dir=innodb_data_file_path=ibdata1:12M;/data/mysql/mysql3306/data1/ibdata2:12M:autoextend

  如果想為innodb表空間指定不同目錄下的檔案,必須指定 innodb_data_home_dir =。這個例子中會在datadir下建立ibdata1,在/data/MySQL/mysql3306/data1/目錄下建立ibdata2。

innodb_file_per_table:是否開啟獨立表空間,若開啟,InnoDB將使用獨立的.idb檔案建立新表而不是在共享表空間中建立。

  配置示例:innodb_file_per_table=1

innodb_autoinc_lock_mode:配置在向有著auto_increment列的表插入資料時,相關鎖的行為。該引數有3個取值:

  0:tradition傳統,所有的insert語 句開始的時候得到一個表級的auto_inc鎖,在語句結束的時候才能釋放 這個鎖,影響了併發的插入。

  1:consecutive連續,mysql可以一次生成 幾個連續的auto_inc的值,auto_inc不需要一直保持到語句結束,只要 語句得到了相應的值後就可以提前釋放鎖(這也是mysql的預設模式)。

  2:interleaved交錯,這個模式下已經沒有了auto_inc鎖,所以效能是最好的,但是對於同一個語句來說它得到的auto_inc的值可能不是連續的。

  配置示例:innodb_autoinc_lock_mode=1

low_priority_updates:在myisam引擎鎖使用中,預設情況下寫請求優先於讀請求,可以通過將該引數設定為1來使myisam引擎給予讀請求優先許可權, 所有的insert、update、delete和lock table write語句將等待直到受影響的表沒有掛起的select或lock table read。

  配置示例:low_priority_updates=0(預設配置)

max_write_lock_count:當一個myisam表的寫鎖定達到這個值後,mysql就暫時 將寫請求優先順序降低,給部分讀請求獲得鎖的機會。

innodb_lock_wait_timeout:InnoDB鎖等待超時引數,若事務在該時間內沒有獲 得需要的鎖,則發生回滾。

  配置示例:innodb_lock_wait_timeout=50(預設50秒)

max_heap_table_size:設定memory表的最大空間大小,該變數可以用來計算 memory表的max_rows值。在已有memory表上設定該引數是沒有效果 的,除非重建表。

查詢相關

max_sort_length:配置對blob或text型別的列進行排序時使用的位元組數(只對配置的前max_sort_length個位元組進行排序,其他的被忽略)

max_length_for_sort:mysql有兩種排序演算法,兩次傳輸排序和單次傳輸排序。當查詢需要所有列的總長度不超過max_length_for_sort時,mysql使用 單次傳輸排序,否則使用兩次傳輸排序。

optimizer_search_depth:在關聯查詢中,當需要關聯的表數量超過optimizer_search_depth的時候,優化器會使用“貪婪”搜尋的方式查詢“最優”的關聯順序。