數據庫參數
MYSQL數據庫的參數配置一般在my.ini配置文件中修改/添加(部分參數也可以用set global 參數名=值 做臨時調整,重啟后失效),配置完后需要重啟數據庫才生效。
參數1:innodb_buffer_pool_size = Gb/MB
說明:此參數類似於oracle的SGA配置,當主機做為mysql數據庫服務器時,一般配置為整機內存的60%~80%。
參數2:innodb_buffer_pool_instances=N
說明:內存緩沖池實例數,將innodb_buffer_pool_size配置的內存分割成N份,此參數當配置內存大小於1G時才生效,當數據庫有多個會話進行數據庫操作時,用於並行在 多個內存塊中處理任務,一般配置值《=服務器CPU的個數。
參數3:max_connections = 2000 說明:最大連接數,當數據庫面對高並發時,這個值需要調節為一個合理的值,才滿足業務的並發要求,避免數據庫拒絕連接。
參數4:max_user_connections=1000 說明:設置單個用戶的連接數。
參數5:innodb_log_buffer_size =32M
說明:日志緩沖區大小,一般不用設置太大,能存下1秒鍾操作的數據日志就行了,mysql默認1秒寫一輪詢寫一次日志到磁盤。
參數6:innodb_flush_log_at_trx_commit
說明:(這個配置很關鍵)一般的實時業務交易配置為2,取值0,1,2
0:log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁盤)操作同時進行。該模式下在事務提交的時候,不會主動觸發寫入磁盤的操作。
1:每次事務提交時MySQL都會把log buffer的數據寫入log file,並且flush(刷到磁盤)中去,該模式為系統默認。
2:每次事務提交時MySQL都會把log buffer的數據寫入log file,但是flush(刷到磁盤)操作並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁盤)操作。
0與2的區別:
0:當mysql掛了之后,可能會損失前一秒的事務信息
2:當mysql掛了之后,如果系統文件系統沒掛,不會有事務丟失。
參數7:innodb_read_io_threads = 16 說明:數據庫讀操作時的線程數,用於並發。
參數8:innodb_write_io_threads = 16 說明:數據庫寫操作時的線程數,用於並發。
參數9:innodb file per table= 1
說明:每一個表是否使用獨立的數據表空間,默認為OFF(使用共享表空間),一般建議配置為1,
InnoDB 默認會將所有的數據庫InnoDB引擎的表數據存儲在一個共享空間中:(ibdata1),這樣就感覺不爽,增刪數據庫的時候,ibdata1文件不會自動收縮,
單個數據庫的備份也將成為問題。通常只能將數據使用mysqldump 導出,然后再導入解決這個問題。 共享表空間在Insert操作上少有優勢。
其它都沒獨立表空間表現好,如果數據庫基本上都插入操作則配置為0。
參數10:innodb_stats_on_metadata={ OFF|on}
說明:是否動態收集統計信息,開啟時會影響數據庫的性能(一般關閉,找個時間手動刷新,或定時刷新)如果為關閉時,需要配置數據庫調度任務,定時刷新數據庫的統計信息。
參數11:innodb_spin_wait_delay=10 說明:控制CPU的輪詢時間間隔,默認是6,配置過低時,任務調度比較頻繁,會消耗CPU資源。
參數12:innodb_lock_wait_timeout=30 說明:控制鎖的超時時間,默認為50,這個值要注意,如果有特殊業務確實要耗時較長時,不能配置太短。