mysql配置檔案
/etc/my.cnf 或者 /etc/my.cnf.d/server.cnf
幾個關鍵的檔案:
.pid檔案,記錄了程序id
.sock檔案,是內部通訊使用的socket介面,比3306快
.log檔案,日誌檔案
.cnf或.conf檔案,配置檔案
安裝目錄:basedir
資料目錄:datadir
基本配置,指定資料目錄,my.cnf或者server.cnf
[mysqld]
user = mysql
port = 3306
socket = /data/3306/mysql.sock,#這裡指定了乙個特別的連線
basedir = /usr/local/mysql
datadir = /data/3306/data
[client]
port = 3306
socket = /data/3306/mysql.sock,在客戶端也要宣告它,命令列要用到
query_cache_size
query_cache裡的資料又怎麼處理呢?首先要把query_cache和該錶相關的語句全部置為失效,然後在寫入更新。那麼如果query_cache非常大,該錶的查詢結構又比較多,查詢語句失效也慢,乙個更新或是insert就會很慢,這樣看到的就是update或是insert怎麼這麼慢了。所以在資料庫寫入量或是更新量也比較大的系統,該引數不適合分配過大。而且在高併發,寫入量大的系統,建議把該功能禁掉。
query_cache_limit
指定單個查詢能夠使用的緩衝區大小,預設為1m
query_cache_min_res_unit
預設是4kb,設定值大對大資料查詢有好處,但如果你的查詢都是小資料查詢,就容易造成記憶體碎片和浪費
說明:禁掉查詢快取的方法就是直接注釋掉查詢快取的配置,如#query_cache_size=1m, 這樣就可以了
sort_buffer_size = 2m
connection級引數。太大將導致在連線數增高時,記憶體不足。
max_allowed_packet = 32m
網路傳輸中一次訊息傳輸量的最大值。系統預設值 為1mb,最大值是1gb,必須設定1024的倍數。
join_buffer_size = 2m
和sort_buffer_size一樣,該引數對應的分配記憶體也是每個連線獨享
tmp_table_size = 256m
預設大小是 32m。group by 多不多的問題
max_heap_table_size = 256m
key_buffer_size = 2048m
索引的緩衝區大小,對於內存在4gb左右的伺服器來說,該引數可設定為256mb或384mb。
read_buffer_size = 1m
read_rnd_buffer_size = 16m
進行排序查詢時,mysql會首先掃瞄一遍該緩衝,以避免磁碟搜尋
bulk_insert_buffer_size = 64m
批量插入資料快取大小,可以有效提高插入效率,預設為8m
innodb_buffer_pool_size = 2048m
只需要用innodb的話則可以設定它高達 70-80% 的可用記憶體。一些應用於 key_buffer 的規則有 ——如果你的資料量不大,並且不會暴增,那麼無需把innodb_buffer_pool_size 設定的太大了。
innodb_additional_mem_pool_size = 16m
網路傳輸中一次訊息傳輸量的最大值。系統預設值為1mb,最大值是1gb,必須設定1024的倍數。
innodb_log_files_in_group = 3
迴圈方式將日誌檔案寫到多個檔案。推薦設定為3
innodb_lock_wait_timeout = 120
innodb 有其內建的死鎖檢測機制,能導致未完成的事務回滾。innodb_file_per_table = 0 獨享表空間,關閉
open_files_limit = 10240
允許開啟的檔案數
back_log = 600
短時間內的多少個請求可以被存在堆疊中
max_connections = 3000
mysql預設的最大連線數為100,mysql伺服器允許的最大連線數16384
max_connect_errors = 6000
設定每個主機的連線請求異常中斷的最大次數,當超過該次數,mysql伺服器將禁止host的連線請求
thread_cache_size = 300
重新利用儲存在快取中線程的數量
thread_concurrency = 8
thread_concurrency應設為總cpu核數的2倍
thread_stack = 192k
每個執行緒的堆疊大小,預設值足夠大,可滿足普通操作。可設定範圍為128k至4gb,預設為192kb。
執行緒池很少配
thread_handling
表示執行緒池模型。
thread_pool_size
表示執行緒池的group個數,一般設定為當前cpu核心數目。理想情況下,乙個group乙個活躍的工作執行緒,達到充分利用cpu的目的。
thread_pool_stall_limit
用於timer執行緒定期檢查group是否「停滯」,引數表示檢測的間隔。
thread_pool_idle_timeout
當乙個worker空閒一段時間後會自動退出,保證執行緒池中的工作執行緒在滿足請求的情況下,保持比較低的水平。60秒
thread_pool_oversubscribe
該引數用於控制cpu核心上「超頻」的執行緒數。這個引數設定值不含listen執行緒計數。
threadpool_high_prio_mode
表示優先佇列的模式。
thread_pool_max_threads
限制執行緒池最大的執行緒數,超過將無法再建立更多的執行緒,預設為100000。
thread_pool_high_prio_tickets
最多語序多少次被放入高優先順序佇列中,預設為4294967295。只有在thread_pool_high_prio_mode為transactions的時候才有效果
說明:
執行緒處理的最小單位是statement(語句)
執行緒池實現在server端,通過建立一定數量的執行緒服務db請求,相對於one-conection-per-thread的乙個執行緒服務乙個連線的方式,執行緒池服務的最小單位是語句,即乙個執行緒可以對應多個活躍的連線。
slow_query_log
是否開啟慢查詢日誌,1表示開啟,0表示關閉。
log-slow-queries
舊版(5.6以下版本)mysql資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給乙個預設的檔案host_name-slow.log
slow-query-log-file
新版(5.6及以上版本)mysql資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給乙個預設的檔案host_name-slow.log
long_query_time
慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。
log_queries_not_using_indexes
未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。
log_output
日誌儲存方式。log_output='file'表示將日誌存入檔案,預設值是'file'。log_output='table'表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output='file,table'。日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案。
安裝:yum install innotop
啟動:innotop -u root -p 『123』
幫助:?
說明:innotop是乙個實時工具,只能檢視當前的情況,不能記錄歷史情況
檢視幫助的時候輸入乙個 ?
幫助裡面的abcd.....u就是可以檢視對應的指標的情況,如查詢列表輸入q、查詢緩衝區輸入b、命令統計輸入c
說明:lepus是一款開源的資料庫監控工具,能監控各種資料庫,能監控多台資料庫,能檢視歷史情況
效能優化系列八 MYSQL的配置優化
mysql配置檔案 etc my.cnf 或者 etc my.cnf.d server.cnf 幾個關鍵的檔案 pid檔案,記錄了程序id sock檔案,是內部通訊使用的socket介面,比3306快 log檔案,日誌檔案 cnf或.conf檔案,配置檔案 安裝目錄 basedir 資料目錄 dat...
ORACLE SQL效能優化系列 八
16.通過內部函式提高sql效率.select h.empno,e.ename,h.hist type,t.type desc,count from history type t,emp e,emp history h where h.empno e.empno and h.hist type t....
ORACLE SQL效能優化系列 八
25.用索引提高效率 索引是表的乙個概念部分,用來提高檢索資料的效率.實際上,oracle使用了乙個複雜的自平衡b tree結構.通常,通過索引查詢資料比全表掃瞄要快.當oracle找出執行查詢和update語句的最佳路徑時,oracle優化器將使用索引.同樣在聯結多個表時使用索引也可以提高效率.另...