mysql參數介紹(客戶端中執行),儘可能只修改session級別的參數。mysql
全局參數(新鏈接的session纔會生效,原有已經鏈接的session不生效)sql
- set global 參數名=參數值;
- set @@global.參數名 :=參數值;
會話參數數據庫
- set [session] 參數名=參數值;
- set @@session.參數名 :=參數值;
- 肯定可使用的內存的上限
- 肯定mysql每一個鏈接使用的內存
sort_buffer_size:須要注意,每一個鏈接分配指定大小的內存; join_buffer_size; read_buffer_size; read_rnd_buffer_size。 上述都爲每一個進程分別進行設置,因此要注意配置大小。
- 肯定須要爲操做系統保留多少內存
- 如何爲緩存池分配內存
Innodb_buffer_pool_size:總內存 - (每一個線程所需內存 * 鏈接數) - 系統保留內存 key_buffer_size:主要用於myisam引擎
Innodb I/O相關配置緩存
- Innodb_log_file_size:單個日誌文件大小
- Innodb_log_files_in_group:日誌文件的個數
- 事務日誌總大小:
Innodb_log_files_in_group * Innodb_log_file_size
- Innodb_log_buffer_size:日誌緩衝區大小
- Innodb_flush_log_at_trx_commit:日誌刷新的頻率
0:每秒進行一次log寫入cache,並flush log到磁盤。若是mysql關閉或重啓會致使至少1秒日誌的丟失。 1:『默認』,在每次事務提交執行log寫入cache,並flush log到磁盤。保證不會致使事務日誌的丟失。 2:【建議】,每次事務提交,執行log數據寫入到cache。每秒執行一次flush log到磁盤。
- Innodb_flush_method=O_DIRECT:Innodb刷新的方式。
- Innodb_file_per_table=1:表空間。強烈建議啓用。
- Innodb_doublewrite=1:
Myisam I/O相關配置安全
- delay_key_write
OFF:每次寫操做後刷新新建緩衝區的髒塊到磁盤 ON:只對建表是指定了delay_key_write選項的表使用延遲刷新。 ALL:對全部MYISAM表使用延遲鍵寫入。會致使表損壞,使用相關命令進行修復。
- expire_logs_days指定自動清理binlog的天數
- max_allowed_packet控制mysql能夠接收的包的大小
- skip_name_resolve禁用DNS查找
- sysdate_is_now確保sysdate和now返回的日期是同樣的。(同一條sql同時使用sysdate返回的結果有多是不一樣的,於是建議啓用)
- read_only禁止非super用戶寫權限:在作主從複製時,建議備庫啓用這個配置項。
- skip_slave_start警用slave自動恢復,(從服務器中進行配置)
- sql_mode設置mysql所使用的sql模式。(建議不要在生產換環境中調整這個值,有可能會致使系統不可用)
strict_trans_tables no_engine_subtitution no_zero_date no_zero_in_date only_full_group_by:select字句須要所有列出group by字段,不然報錯。
- sync_binlog控制mysql如何向磁盤中刷新binlog
- tmp_table_size和max_heap_table_size控制內存臨時表的大小。兩個值應保持一致
- max_connections容許最大鏈接數,通常設置爲2000均可以。
- 過度的反範式話爲表創建太多的列
- 過多的範式話形成太多表的關聯(最多隻容許61個表關聯)
- 在OLTP中使用不恰當的分區表
- 使用外鍵保證數據的完整性(性能很低,建議不要使用外鍵約束)
性能優化順序性能優化
- 數據庫結構和sql語句優化
- 數據庫引擎的選擇和參數配置(不要混合使用存儲引擎)
- 系統選擇及優化
- 硬件升級