Mysql 引數優化

2021-06-28 06:54:30 字數 1108 閱讀 6082

1. my.cnf中的把  innodb_buffer_pool_size=16g 

別佔滿了記憶體。

2. my.cnf中的把  innodb_log_buffer_size= 50m

這個主要是滿足大事務的需求。

3. my.cnf中的把  innodb_log_file_size= 4g 

(這個是在硬碟,所以先設大

點,這個值設大點可能導致 mysql  crash之後恢復會比較慢,但好處是效能會比

較高)4. my.cnf 中的把 innodb_write_io_threads= 8

5. my.cnf 中的把 innodb_read_io_threads= 8

上面兩個值看需求

6. 如果系統併發量大的話(上百上千。。。可能你們用不到),可以考慮把

innodb_buffer_pool_instances設大,但是需要注意

innodb_buffer_pool_instances * innodb_buffer_pool_size 別大於16g

7. my.cnf中在[mysqld]下面新增 innodb_file_per_table

8. 如果業務對事務的安全性要求不是特別強的話

my.cnf中在[mysqld]下新增(或修改)

innodb_flush_log_at_trx_commit=2

存在的風險是如果作業系統crash了或機器斷電了,最後一秒所有提交事務可能

會丟失,這裡是已經提交的,所以你那裡的應用端應該已經正確返回了。

9. 另外您可以考慮對資料壓縮,

my.cnf中的把 row_format=compressed

如果有很大的text,blob, varchar 可以考慮使用。

10. 在my.cnf的 [mysqld]中 transaction-isolation= repeatable-read 

(這個是預設值。。。)

如果隔離級別低於 repeatable-read  ,binlog會按照語句級來記錄,當進行批量插入,刪除時候,可能會影響效能。

11. expire_logs_days=3   保留3天(包括今天)的binlog檔案

以避免binlog占用過多的磁碟空間。

mysql引數優化

back log 要求 mysql 能有的連線數量。當主要mysql執行緒在乙個很短時間內得到非常多的連線請求,這就起作用,然後主線程花些時間 儘管很短 檢查連線並且啟動乙個新執行緒。back log值指出在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆疊中。只有如果期望在乙個短時...

Mysql引數優化

修改的引數 1 long query time 10改為long query time 2 此引數為將執行時間超過多少秒的sql,放入慢查詢日誌。在此將時間從10秒縮短為2秒,從而更加詳細的抓取重負載的sql。2 tmp table size 75m改為tmp table size 256m 此引數...

mysql引數優化

mysql引數優化 用來存放innodb的內部目錄,對於大資料設定16m足夠用 innodb additional mem pool size 16m innodb 快取總大小設定,一般設定為系統記憶體的70 80 innodb buffer pool size 12g 指定所有innodb資料檔案...