硬件:內(nèi)存32G
character_set_server = utf8
:設(shè)置字符集為utf8
innodb_file_per_table = 1
:打開獨立表空間
max_connections = 8000
:(并發(fā)連接)MySQL 服務(wù)所允許的同時會話數(shù)的上限么鹤,經(jīng)常出現(xiàn) Too Many Connections 的錯誤提示稽煤,則需要增大此值
back_log = 300
:back_log 是操作系統(tǒng)在監(jiān)聽隊列中所能保持的連接數(shù)
max_connect_errors = 1000
:每個客戶端連接最大的錯誤允許數(shù)量屹培,當超過該次數(shù),MySQL 服務(wù)器將禁止此主機的連接請求聂示,直到 MySQL 服務(wù)器重啟或通過 flush hosts 命令清空此主機的相關(guān)信息
open_files_limit = 10240
:所有線程所打開表的數(shù)量
max_allowed_packet = 32M
:每個連接傳輸數(shù)據(jù)大小,最大1G鹅颊,須是1024的倍數(shù)彩匕,一般設(shè)為最大的 BLOG 的值
wait_timeout = 10
:指定一個請求的最大連接時間
sort_buffer_size = 16M
:排序緩沖被用來處理類似 ORDER BY 以及 GROUP BY 隊列所引起的排序
join_buffer_size = 16M
:不帶索引的全表掃描,使用的 buffer 的最小值
query_cache_size =128M
:查詢緩沖大小
query_cache_limit = 4M
:指定單個查詢能夠使用的緩沖區(qū)大小杏愤,缺省為1M
transaction_isolation = REPEATABLE-READ
:設(shè)定默認的事務(wù)隔離級別
thread_stack = 512k
:線程使用的堆大小靡砌。此值限制內(nèi)存中能處理的存儲過程的遞歸深度和SQL語句復(fù)雜性,此容量的內(nèi)存在每次連接時被預(yù)留
log_bin
:二進制日志功能
log_long_format=row
:二進制日志格式
innodb_buffer_pool_size = 6G
:InnoDB 使用一個緩沖池來保存索引和原始數(shù)據(jù)珊楼,可設(shè)置這個變量到服務(wù)器物理內(nèi)存大小的80%
innodb_file_io_threads = 4
:用來同步IO操作的IO線程的數(shù)量
innodb_thread-concurrency = 16
:在InnoDB核心內(nèi)的允許線程數(shù)量通殃,建議的設(shè)置是CPU數(shù)量加上磁盤數(shù)量的兩倍
innodb_log_buffer_size = 16M
:用來緩沖日志數(shù)據(jù)的緩沖區(qū)的大小
innodb_log_file_size = 512M
:在日志組中每個日志文件的大小
innodb_log_files_in_group = 3
:在日志組中的文件總數(shù)
innodb_lock_wait_timeout = 120
:SQL語句在被回滾前,InnoDB事務(wù)等待InnoDB行鎖的時間
long_query_time = 2
:慢查詢時長
log_queries_not_using_indexes
:將沒有使用索引的查詢也記錄下來
MySQL配置最佳實踐
- 高并發(fā)大數(shù)據(jù)的互聯(lián)網(wǎng)業(yè)務(wù)厕宗,架構(gòu)設(shè)計思路是“解放數(shù)據(jù)庫CPU画舌,將計算轉(zhuǎn)移到服務(wù)層”,并發(fā)量大的情況下已慢,這些功能很可能將數(shù)據(jù)庫拖死曲聂,業(yè)務(wù)邏輯放到服務(wù)層具備更好的擴展性,能夠輕易實現(xiàn)“增機器就加性能”
參考:
阿里巴巴 jave 開發(fā)手冊
58到家數(shù)據(jù)庫30條軍規(guī)解讀
https://zhuanlan.51cto.com/art/201702/531364.htm