mysql 常用引數整理

leixue0906發表於2015-05-07
myisam 預設的儲存格式是靜態表,如果需要儲存的內容後面本來就帶有空格,那麼在返回結果的時候也會被去掉.
myisam的動態表頻繁dml會產生碎片,需要定期執行optimize table語句或myisamchk -r命令.
innodb表,自動增長列必須是索引.如果是組合索引,必須是組合索引的第一列.
innodb表,可以透過暫時關閉外來鍵約束來加快處理的速度,關閉的命令是set foreign_key_checks=0;
innodb,儲存表和索引儲存分為:共享表空間儲存和多表空間儲存.由引數innodb_file_per_table決定.
status中handler_read_key的值很高,代表了一個行被索引讀的次數高,說明索引正在工作.
status中handler_read_rnd_next的值高則意味著查詢執行低效,並且應該建立索引補救.
analyze table將可以使得系統得到準確的統計資訊,使得sql能夠生成正確的執行計劃.
check table的作用是檢查表或檢視是否有錯誤.
optimize table可以將表中的空間碎片進行合併,並且可以消除由於刪除或者更新造成的空間浪費,for myisam,bdb,innodb.
從不同客戶插入很多行,能透過使用insert delayed語句得到更高的速度.
如果查詢包括group by 但使用者想要避免排序結果的消耗,則可以指定order by null 禁止排序.
可以使用use index,ignore index,force index這些sql hint選擇索引
procedure analyze()函式可以對資料表中列的資料型別提出最佳化建議.
myisam可透過檢查table_locks_waited和table_locks_immediate狀態變數來分析系統上的表鎖定爭用.
myisam系統變數concurrent_insert用以控制其併發插入的行為,值為2時總是允許併發插入.
innodb可透過檢查innodb_row_lock狀態變數來分析系統上的行鎖的爭用.
innodb在不透過索引條件查詢的時候,innodb使用的是表鎖,而不是行鎖.
myisam的引數key_buffer_size用來設定索引塊快取的大小,它所有執行緒共享.
table_cache參數列示資料庫使用者開啟表的快取數量,每個連線進來,都會至少開啟一個表快取 ,它與max_connections有關.可以透過檢查open_tables和opened_tables確定這個引數的大小.
innodb_buffer_pool_size引數定義innodb儲存引擎的表資料和索引資料的最大記憶體緩衝區大小.
innodb_flush_log_at_trx_commit引數用來控制緩衝區中的資料寫入到日誌檔案以級日誌檔案資料重新整理到磁碟的操作機制.0表示每秒寫日誌檔案,並刷硬碟;1表示每事務寫日誌檔案,並刷硬碟;2表示每事務寫日誌,但不刷硬碟.
sync_binlog=1是最安全但是效能損耗最大的設定,是差不多比sync_binlog=0時的寫入效能差5倍左右.
innodb_additional_mem_pool_size引數用來儲存資料庫結構和其他內部資料結構的記憶體池的大小.
innodb_lock_wait_timeout引數主要被用於在出現死鎖情況的時候等待指定的時間後回滾.
innodb_support_xa引數設定是否支援分散式事務,預設值是on,關閉這個引數,可減少磁碟重新整理次數提高效能.
innodb_log_buffer_size引數是日誌快取的大小,一般8~16M就夠了.
innodb_log_file_size引數是一個日誌組中每個日誌檔案的大小,這個值越大效能相對越高,但恢復時間會加大.
mysqldump備份時,為了保證資料備份的一致性,myisam儲存引擎在備份的時候需要加上-l引數,innodb和bdb儲存引擎要加上--single-transaction引數.
log-slave-updates這個引數用來配置從伺服器上的更新操作是否寫二進位制日誌,預設是不開啟的.
忘記mysql的root密碼,透過--skip-grant-tables引數解決.
max_connections:整個mysql允許的最大連線數.
max_user_connections:每個使用者允許的最大連線數.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26845409/viewspace-1627149/,如需轉載,請註明出處,否則將追究法律責任。

相關文章