mysql 參數

mysql 參數對於mysql性能調優至關重要,我們可以使用  show VARIABLES  查看mysql參數。可以使用以下語句進行查詢

show VARIABLES like '%bin%'

show VARIABLES where variable_name like '%bin%'

select @@sync_binlog

更新操作:

set global slow_query_log = 1   ## 這種方法僅限於當次數據庫,如果重啓的話會失效

set session slow_query_log = 1   ## 這種方法僅限於當次回話,回話結束會失效

找到mysql 安裝目錄下的my.ini 添加 session slow_query_log = 1 ,重啓mysql,是永久的

一般爲1爲開啓,0位關閉

 

 wait_timeout

當一個數據庫連接成功後,如果不進行任何操作,連接器會在固定的時間後將連接斷開,這個時間是由參數wait_timeout控制,默認爲8小時。

 innodb_flush_log_at_trx_commit

表示redo log 寫入策略,一般設置爲1 ,表示事務的每次提交,redo log 都持久化磁盤

  1. 設置爲 0 的時候,表示每次事務提交時都只是把 redo log 留在 redo log buffer 中 ;

  2. 設置爲 1 的時候,表示每次事務提交時都將 redo log 直接持久化到磁盤;

  3. 設置爲 2 的時候,表示每次事務提交時都只是把 redo log 寫到 page cache。

 sync_binlog

表示binlog寫入策略,一般設置爲1,表示事務的每次提交,bin 都持久化磁盤

  •  write,指的就是指把日誌寫入到文件系統的 page cache,並沒有把數據持久化到磁盤,所以速度比較快。
  •  fsync,纔是將數據持久化到磁盤的操作。一般情況下,我們認爲 fsync 才佔磁盤的 IOPS。
  1. sync_binlog=0 的時候,表示每次提交事務都只 write,不 fsync;

  2. sync_binlog=1 的時候,表示每次提交事務都會執行 fsync;

  3. sync_binlog=N(N>1) 的時候,表示每次提交事務都 write,但累積 N 個事務後才 fsync。

非雙1 情況 

我目前知道的場景,有以下這些:

  1. 業務高峯期。一般如果有預知的高峯期,DBA 會有預案,把主庫設置成“非雙 1”。

  2. 備庫延遲,爲了讓備庫儘快趕上主庫。@永恆記憶和 @Second Sight 提到了這個場景。

  3. 用備份恢復主庫的副本,應用 binlog 的過程,這個跟上一種場景類似。

  4. 批量導入數據的時候。

一般情況下,把生產庫改成“非雙 1”配置,是設置 innodb_flush_logs_at_trx_commit=2、sync_binlog=1000。

binlog 格式:

binlog_format 

 值:statement,row,mixed

 

日誌緩存大小:

innodb_log_buffer_size

transaction_isolation

事務隔離級別,在mysql 5.6以前,該參數爲tx_isolation

 autocommit

是否自動提交,爲0的時候,即關閉自動提交,那麼我們執行一個select的時候,這個事務就啓動了,而且並不會自動提交。這個事務持續存在直到你主動執行 commit 或 rollback 語句,或者斷開連接。容易造成長事務。建議設置爲1,自動提交\

 慢查詢;https://www.cnblogs.com/saneri/p/6656161.html

 innodb io能力 (建議和磁盤iops一致)

innodb_io_capacity

 髒頁比例

innodb_max_dirty_pages_pct

 表數據存放地址:

innodb_file_per_table 爲 on 

這個參數設置爲 OFF 表示的是,表的數據放在系統共享表空間,也就是跟數據字典放在一起;

這個參數設置爲 ON 表示的是,每個 InnoDB 表數據存儲在一個以 .ibd 爲後綴的文件中。

我建議你不論使用 MySQL 的哪個版本,都將這個值設置爲 ON。因爲,一個表單獨存儲爲一個文件更容易管理,而且在你不需要這個表的時候,通過 drop table 命令,系統就會直接刪除這個文件。而如果是放在共享表空間中,即使表刪掉了,空間也是不會回收的。

 排序內存空間

sort_buffer_size,如果超出這個大小,排序需要藉助磁盤臨時文件來進行排序。

 排序的行的數據最大值:

max_length_for_sort_data,如果超過這個大小,排序會使用rowid排序。

 內存臨時表大小:

tmp_table_size ,

如果內存臨時表放不下,就需要創建磁盤臨時表,但是這樣比較耗費性能

 

 最大連接數

max_connections

 備庫並行複製線程數

slave_parallel_workers

sql 語句安全監測

sql_safe_updates 設置爲1 爲開啓,0關閉

如果是開啓狀態,那麼像delete,update忘記加where條件會報錯

mysql內存大小

innodb_buffer_pool_size 

join_buffer 大小

join_buffer_size 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章