mysql常用引數彙總
阿新 • • 發佈:2019-01-24
我把mysql比較重要的引數進行了總結,便於自己日後的查詢。也希望有其他朋友,對我總結不到位的地方進行指點。
引數檔案配置意義
1、skip-name-resolve (禁止dns解析)
配置之後就不能在授權表中使用主機名了,只能使用ip 好處就是解析會耗費資源。
2、skip-symbolic-links(可以減少磁碟搜取次數)
允許你放置資料庫目錄到一個不同的硬碟,通過設定一個符號連結指向它。這類似於Unix中的符號連結,儘管設定連結的過程不同。
符號連結預設為啟用。如果你不需要,使用skip-symbolic-links選項來禁用它
3、skip-external-locking(禁止外部鎖定)
當外部鎖定(external-locking)起作用時,每個程序若要訪問資料表,則必須等待之前的程序完成操作並解除鎖定。由於伺服器訪問資料 表時經常需要等待解鎖,因此在單伺服器環境下external locking會讓MySQL效能下降。所以在很多Linux發行版的源中,MySQL配置檔案中預設使用了skip-external-locking
來避免external locking。
4、skip-slave-start(slave複製程序不隨mysql啟動而啟動)
可能會造成主從資料不一致。
5、table_open_cache (開啟表緩衝)
可以減少表反覆需要開啟,從而減少資源消耗。
#############connect############
6、back-log(併發連線數)
back_log標記MySQL的併發連線數。在MySQL主執行緒短時間內收到大量連線請求時會涉及back_log ,然後主執行緒在一段時間(或者瞬間)後檢查連線數,並啟動新執行緒。back_log 的值表示:MySQL(處理大量請求時,由於滿負荷)暫時停止回覆新請求前能夠堆放的請求數。如果使用者希望短時間內有更大的連線數,應該增大back_log
的值。
7、max_connections(最大連線數,使用者數)
8、max_connect_errors(最大錯誤連線數)
一個ip使用者連線失敗資料庫的最大次數。
9、open_files_limit(開啟檔案數)
lsof -p27732 |wc
-l 這個可以看系統開啟程序數。
該引數用來控制mysqld程序可以使用的檔案描述符。如果你發現mysql報Too many open files錯誤,說明應該增加該引數值。該引數的最大值理論上是最大的非負整數,但是實際上這個最大值通常跟我們使用的平臺有關。如果需要的檔案描述符無法分配,mysqld會在error
log中寫入告警日誌。
##############timeout###########
10、connect-timeout(等待一個連線響應的時間
)
獲取MySQL連線是多次握手的結果,除了使用者名稱和密碼的匹配校驗外,還有IP->HOST->DNS->IP驗證,任何一步都可能因為網路問題導致執行緒阻塞。為了防止執行緒浪費在不必要的校驗等待上,超過connect_timeout的連線請求將會被拒絕。
總結:就是客戶要連線我mysql,但是連線操作的時間超時了,這個連線我就不連了。
11、wait-timeout(伺服器關閉互動式連線前等待活動的秒數。)
你連線資料庫執行操作完成之後一直處於sleep狀態也不能持續佔用連線執行緒。所以這個引數是讓處於空閒狀態下的非互動連線超時就斷開的引數。
12、interactive-timeout(伺服器關閉互動式連線前等待活動的秒數)
這個引數是讓處於空閒狀態下的互動連線超時就斷開的引數。
13、slave-net-timeout (主從連線超時等待時間)
mysql主從複製時,master和slave之間的網路中斷,但是master和slave都沒有察覺,slave會等待slave_net_timeout時間後(預設3600s),才能認為網路出現故障,然後才會重連並且追趕這段時間主從的資料。
14、net_read_timeout (活躍的讀使用者連線超時)
即使連線沒有處於sleep狀態,即客戶端忙於計算或者儲存資料,MySQL也選擇了有條件的等待。在資料包的分發過程中,客戶端可能來不及響應 (傳送、接收、或者處理資料包太慢)。為了保證連線不被浪費在無盡的等待中,MySQL也會選擇有條件(net_read_timeout和 net_write_timeout)地主動斷開連線。
15、net_write_timeout (活躍的寫使用者連線超時)
16、net_retry_count (讀操作中斷,嘗試連線次數)
連線中斷,嘗試n次之後就放棄連線
17、net_buffer_length (連線緩衝和結果緩衝大小。)
mysqldump時會用到次引數,如果你想讓他變快,可以把這個引數調整大,這樣匯入語句的速度就會變快。
18、max_allowed_packet (客戶端/伺服器之間通訊的快取區的最大大小)
這個值是是net_buffer_length的最大大小。
################# cache #############
19、table_open_cache (表描述符快取大小)
可減少檔案開啟/關閉次數,可以快取表描述符,這樣就不會因為反覆開啟關閉表所消耗過多的效能了。
20、thread_stack (單個連線可以使用的記憶體量)
每個連線被建立的時候,mysql分配給它的記憶體.這個值一般認為預設就可以應用於大部分場景了,除非必要非則不要動它.
21、thread_cache_size (執行緒快取大小)
伺服器執行緒快取這個值表示可以重新利用儲存在快取中執行緒的數量,當斷開連線時如果快取中還有
空間,那麼客戶端的執行緒將被放到快取中,如果執行緒重新被請求, 那麼請求將從快取中讀取,如果快取中
是空的或者是新的請求,那麼這個執行緒將被重新建立,如果有很多新的執行緒,增加這個值可以改善系統
效能.通過比較 Connections 和 Threads_created 狀態的變數,可以看到這個變數的作用
22、thread_concurrency(同時執行的執行緒的資料)
設定 thread_concurrency 的值的正確與否, 對 mysql 的效能影響很大, 在多個 cpu(或多核)
的情況下, 錯誤設定了 thread_concurrency 的值, 會導致 mysql 不能充分利用多 cpu(或多核),
出現同一時刻只能一個 cpu(或核)在工作的情況。thread_concurrency 應設為 CPU 核數的 2 倍.
比如有一個雙核的 CPU, 那麼 thread_concurrency 的應該為 4; 2 個雙核的 cpu,
thread_concurrency 的值應為 8
23、query_cache_size(查詢緩衝大小)
這個是把查詢的結果集,進行快取,一樣的sql語句再次查詢的時候就會直接把快取的結果集給他。但是這個值實際上真不好用,因為只要你兩次訪問之間那個表有任何變動,都會導致快取的結果集失效。所以在增刪改多的情況下這個引數設定很小或者不設定。
24、query_cache_limit(不快取查詢大於該值的結果)
只有小於此設定值的結果才會被緩衝
# 此設定用來保護查詢緩衝,防止一個極大的結果集將其他所有的查詢結果都覆蓋.
25、query_cache_min_res_unit (查詢快取分配的最小塊大小)
預設是 4KB,設定值大對大資料查詢有好處,但如果你的查詢都是小資料查詢,就容易造成記憶體碎片
和浪費
#查詢快取碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
#如果查詢快取碎片率超過 20%,可以用 FLUSH QUERY CACHE 整理快取碎片,或者試試減小
query_cache_min_res_unit,如果你的查詢都是小資料量的話。
#查詢快取利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size *
100%
#查詢快取利用率在 25%以下的話說明 query_cache_size 設定的過大,可適當減小;查詢快取利用
率在 80%以上而且 Qcache_lowmem_prunes > 50 的話說明 query_cache_size 可能有點小,要
不就是碎片太多。
#查詢快取命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%
26、default-time-zone (伺服器時區)
27、character-set-server (server 級別字符集)
28、default-storage-engine (預設儲存)
29、tmp_table_size (臨時表大小)
如果超過該值,則結果放到磁碟中
內部(記憶體中)臨時表的最大大小
# 如果一個表增長到比此值更大,將會自動轉換為基於磁碟的表.
# 此限制是針對單個表的,而不是總和.
30、max_heap_table_size (記憶體表最大值)
獨立的記憶體表所允許的最大容量.
# 此選項為了防止意外建立一個超大的記憶體表導致永盡所有的記憶體資源.
31、log-bin (開啟二進位制日誌功能)
log-bin = mysql-bin #這些路徑相對於 datadir
在複製(replication)配置中,作為 MASTER 主伺服器必須開啟此項
# 如果你需要從你最後的備份中做基於時間點的恢復,你也同樣需要二進位制日誌.
32、log-bin-index (二進位制名字吧)
log-bin-index = mysql-bin.index
33、relay-log (開啟中繼日誌)
relay-log = relay-log
34、 relay_log_index (中繼日誌名字)
relay_log_index = relay-log.index
35、log-warnings (列印錯誤日誌)
log-warnings = 1
36、log-error (錯誤日誌位置)
37、log-output ( 指定了慢查詢輸出的格式)
38、slow_query_log (開啟慢日誌)
39、long-query-time (多慢的查詢語句會記錄到慢日誌中)
記錄慢速查詢. 慢速查詢是指消耗了比 “long_query_time” 定義的更多時間的查詢.
# 如果 log_long_format 被開啟,那些沒有使用索引的查詢也會被記錄.
# 如果你經常增加新查詢到已有的系統內的話. 一般來說這是一個好主意,
40、slow_query_log_file (慢日誌路徑)
41、general_log (開啟通用日誌)
42、general_log_file (文字格式路徑)
43、max_binlog_size (單個二進位制日誌最大量)
44、max_relay_log_size (單箇中繼日誌最大量)
45、relay-log-purge (開啟中繼日誌)
46、expire_logs_days (超時的二進位制將被刪除)
47、binlog_cache_size (二進位制緩衝大小)session級別
111. # 在一個事務中 binlog 為了記錄 SQL 狀態所持有的 cache 大小
# 如果你經常使用大的,多宣告的事務,你可以增加此值來獲取更大的效能.
# 所有從事務來的狀態都將被緩衝在binlog緩衝中然後在提交後一次性寫入到binlog中
# 如果事務比此值大, 會使用磁碟上的臨時檔案來替代.
# 此緩衝在每個連線的事務第一次更新狀態時被建立
48、replicate-wild-ignore-table (複製時要忽略的庫和表)
#############myisam引擎引數##########
49、key_buffer_size (索引的高速緩衝池)
key_buffer_size 指定用於索引的緩衝區大小,增加它可得到更好的索引處理效能。
對於記憶體在 4GB 左右的伺服器該引數可設定為 256M 或 384M。
注意:該引數值設定的過大反而會是伺服器整體效率降低!
119. # 關鍵詞緩衝的大小, 一般用來緩衝 MyISAM 表的索引塊.
# 不要將其設定大於你可用記憶體的 30%,
# 因為一部分記憶體同樣被 OS 用來緩衝行資料
# 甚至在你並不使用MyISAM 表的情況下, 你也需要仍舊設定起 8-64M 記憶體由於它同樣會被內部臨
時磁碟表使用.
50、sort_buffer_size (排序緩衝區大小)
查詢排序時所能使用的緩衝區大小。排序緩衝被用來處理類似 ORDER BY 以及 GROUP BY 佇列所引
起的排序。# 一個用來替代的基於磁碟的合併分類會被使用
# 檢視 “Sort_merge_passes” 狀態變數. 在排序發生時由每個執行緒分配 注意:該引數對應的
分配記憶體是每連線獨佔!如果有 100 個連線,那麼實際分配的總共排序緩衝區大小為 100 × 6 =
600MB。所以,對於記憶體在 4GB 左右的伺服器推薦設定為 6-8M。#
51、read_buffer_size (查緩衝池大小)
讀查詢操作所能使用的緩衝區大小。和 sort_buffer_size 一樣,該引數對應的分配記憶體也是每
連線獨享!用來做 MyISAM 表全表掃描的緩衝大小.當全表掃描需要時,在對應執行緒中分配.
52、join_buffer_size (聯合表緩衝池大小)執行緒級別的。
聯合查詢操作所能使用的緩衝區大小,和 sort_buffer_size 一樣,該引數對應的分配記憶體也是
每連線獨享! # 此緩衝被使用來優化全聯合(full JOINs 不帶索引的聯合).類似的聯合在極大多
數情況下有非常糟糕的效能表現, 但是將此值設大能夠減輕效能影響.通過 “Select_full_join”
狀態變數檢視全聯合的數量,當全聯合發生時,在每個執行緒中分配。
53、read_rnd_buffer_size (索引掃描緩衝池大小)
當在排序之後,從一個已經排序好的序列中讀取行時,行資料將從這個緩衝中讀取來防止磁碟尋道.
# 如果你增高此值,可以提高很多 ORDER BY 的效能.當需要時由每個執行緒分配
總結:把排序好的資料放入這個緩衝池,再進行讀取。可以減少磁碟尋道加快order by讀資料的速度。
54、bulk_insert_buffer_size (插入樹緩衝池)單個執行緒
MyISAM 使用特殊的類似樹的 cache 來使得突發插入
# (這些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA
# INFILE) 更快. 此變數限制每個程序中緩衝樹的位元組數.
# 設定為 0 會關閉此優化.
# 為了最優化不要將此值設定大於 “key_buffer_size”.
# 當突發插入被檢測到時此緩衝將被分配
55、myisam_sort_buffer_size (設定恢復表之時使用的緩衝區的尺寸)
此緩衝當 MySQL 需要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一個空表
中引起重建索引時被分配.這在每個執行緒中被分配.所以在設定大值時需要小心.
56、myisam_max_sort_file_size (重建索引時可分配最大臨時表值)
MySQL 重建索引時所允許的最大臨時檔案的大小 (當 REPAIR, ALTER TABLE 或者 LOAD DATA
INFILE). 如果檔案大小比此值更大,索引會通過鍵值緩衝建立(更慢
57、myisam_repair_threads (多個索引分配多個執行緒去修復)
如果一個表擁有超過一個索引, MyISAM 可以通過並行排序使用超過一個執行緒去修
復他們.這對於擁有多個 CPU 以及大量記憶體情況的使用者,是一個很好的選擇.
如果該值大於1,在Repair by sorting過程中並行建立MyISAM表索引(每個索引在自己的執行緒內)
58、myisam_recover (允許的 GROUP_CONCAT()函式結果的最大長度)
59、group_concat_max_len (group_concat函式拼接最大長度)
60、transaction_isolation (隔離級別)
設定預設的事務隔離級別.可用的級別如下:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ,
SERIALIZABLE
# 1.READ UNCOMMITTED-讀未提交 2.READ COMMITTE-讀已提交 3.REPEATABLE
READ -可重複讀 4.SERIALIZABLE -序列
############innodb引數###########
61、innodb_file_per_table (獨立表空間開啟)
62、innodb_file_format (指定檔案格式引數)
5.5版本的新引數
innodb_file_format = Barracuda
63、innodb_additional_mem_pool_size (資料結構快取池)
這個引數用來設定 InnoDB 儲存的資料目錄資訊和其它內部資料結構的記憶體池大小。應用程式裡的表越多,你需要在這裡分配越多的記憶體。對於一個相對穩定的應用,這個引數的大小也是相對穩定的,也沒有必要預留非常大的值。
64、innodb_buffer_pool_size (innodb緩衝池大小)
InnoDB 使用一個緩衝池來儲存索引和原始資料, 不像 MyISAM.
# 這裡你設定越大,你在存取表裡面數據時所需要的磁碟 I/O 越少.
# 在一個獨立使用的資料庫伺服器上,你可以設定這個變數到伺服器實體記憶體大小的 80%
# 不要設定過大,否則,由於實體記憶體的競爭可能導致作業系統的換頁顛簸.
# 注意在 32 位系統上你每個程序可能被限制在 2-3.5G 使用者層面記憶體限制,
# 所以不要設定的太高.
65、innodb_data_home_dir (表空間檔案存放位置)
設定此選項如果你希望 InnoDB 表空間檔案被儲存在其他分割槽.
# 預設儲存在 MySQL 的 datadir 中
66、innodb_data_file_path (共享表空間設定)
InnoDB 將資料儲存在一個或者多個數據檔案中成為表空間.
# 如果你只有單個邏輯驅動儲存你的資料,一個單個的自增檔案就足夠好了.
# 其他情況下.每個裝置一個檔案一般都是個好的選擇.
# 你也可以配置 InnoDB 來使用裸盤分割槽 – 請參考手冊來獲取更多相關內容
#######mysql5.5new#############
67、innodb_read_io_threads (讀取io執行緒數)
用來同步 IO 操作的 IO 執行緒的數量.
使用後臺執行緒處理資料頁上讀 I/O(輸出)請求的數量。
68、innodb_write_io_threads (寫入io執行緒數)
這個值根據cpu核數來設定一般和上面read的值一樣。
InnoDB 使用後臺執行緒處理資料頁上寫 I/O(輸入)請求的數量;
69、innodb_purge_threads (碎片回收執行緒數)
這個是回收碎片的執行緒數量。執行緒越多回收的速度越快,不影響其他執行緒操作
在之前版本,碎片回收操作是主執行緒的一部分,這經定期排程的方式執行,但會阻塞資料庫的其他操作;
到5.5以後,可以將這個執行緒獨立出來 ;方法:innodb_purge_threads =1
這個應該能讓碎片回收得更及時而且不影響其他執行緒的操作;
#######################################
70、innodb_thread_concurrency(允許併發進入的執行緒數)
InnoDB試著在InnoDB內保持作業系統執行緒的數量少於
或等於這個引數給出的限制
在 InnoDb 核心內的允許執行緒數量.
# 最優值依賴於應用程式,硬體以及作業系統的排程方式.
# 過高的值可能導致執行緒的互斥顛簸.
71、innodb_flush_log_at_trx_commit (日誌刷磁碟的頻率)
如果設定為 1 ,InnoDB 會在每次提交後重新整理(fsync)事務日誌到磁碟上,
# 這提供了完整的 ACID 行為.
# 如果你願意對事務安全折衷, 並且你正在執行一個小的食物, 你可以設定此值到 0 或
者 2 來減少由事務日誌引起的磁碟 I/O
# 0 代表日誌只大約每秒寫入日誌檔案並且日誌檔案重新整理到磁碟.
# 2 代表日誌寫入日誌檔案在每次提交後,但是日誌檔案只有大約每秒才會重新整理到磁碟上.
72、innodb_log_buffer_size (事物日誌緩衝池)
用來緩衝日誌資料的緩衝區的大小.
# 當此值快滿時, InnoDB 將必須重新整理資料到磁碟上.
# 由於基本上每秒都會重新整理一次,所以沒有必要將此值設定的太大(甚至對於長事務而言)
73、innodb_log_file_size (單個事物日誌檔案大小)
在日誌組中每個日誌檔案的大小,你應該設定日誌檔案總合大小到你緩衝池大小的
25%~100%,來避免在日誌檔案覆寫上不必要的緩衝池重新整理行為.
# 不論如何, 請注意一個大的日誌檔案大小會增加恢復程序所需要的時間.
74、innodb_log_files_in_group (有多少個事物日誌檔案)
75、innodb_log_group_home_dir (事物日誌檔案位置)
76、innodb_max_dirty_pages_pct (髒頁在緩衝池所佔的最大比例)
在 InnoDB 緩衝池中最大允許的髒頁面的比例.
# 如果達到限額, InnoDB 會開始重新整理他們防止他們妨礙到乾淨資料頁面.
# 這是一個軟限制,不被保證絕對執行.
innodb 主執行緒重新整理快取池中的資料,使髒資料比例小
於 90%
77、innodb_lock_wait_timeout (事物等待加鎖最大時間)
InnoDB 事務在被回滾之前可以等待一個鎖定的超時秒數。
InnoDB 在它自己的 鎖定表中自動檢測事務死鎖並且回滾事務。InnoDB 用 LOCK TABLES 語句注意
到鎖定設定。預設值是 50 秒
78、innodb_flush_method (重新整理日誌的方法)
InnoDB 用來重新整理日誌的方法.
# 表空間總是使用雙重寫入重新整理方法
fdatasync模式:寫資料時,write這一步並不需要真正寫到磁碟才算完成(可能寫入到作業系統buffer中就會返回完成),真正完成是flush操作,buffer交給作業系統去flush,並且檔案的元資料資訊也都需要更新到磁碟。 O_DSYNC模式:寫日誌操作是在write這步完成,而資料檔案的寫入是在flush這步通過fsync完成
O_DIRECT模式:資料檔案的寫入操作是直接從mysql innodb buffer到磁碟的,並不用通過作業系統的緩衝,而真正的完成也是在flush這步,日誌還是要經過OS緩衝
#######mysql5.6 new#####
79、innodb_buffer_pool_instances (有幾個緩衝池)
預設值是1,表示InnoDB快取池被劃分到一個區域。適當地增加該引數(例如將該引數值設定為2),此時InnoDB被劃分成為兩個區域,可以提升InnoDB的併發效能。如果InnoDB快取池被劃分成多個區域,建議每個區域不小於1GB的空間。
80、innodb_change_buffering (是否開啟查詢緩衝)
在5.5之前。這還不叫change buffer,而是insert buffer; 當更新/插入的非聚集索引的資料所對應的頁不在記憶體中時(對非聚集索引的更新操作通常會帶來隨機IO),會將其放到一個insert buffer中,當隨後頁面被讀到記憶體中時,會將這些變化的記錄merge到頁中。當伺服器比較空閒時,後臺執行緒也會做merge操作 但insert buffer會佔用buffer pool,並且在非聚集索引很少時,並不總是必要的,反而會降低buffer
pool做data cache的能力,5.5提供了引數innodb_change_buffering來對其進行控制 根據官方文件的描述,主要包括以下幾個值: 1.all The default value: buffer inserts, delete-marking operations, and purges. 2.none Do not buffer any operations. 3.inserts Buffer insert operations. 4.deletes Buffer delete-marking
operations.(包括delete和update操作) 5.changes Buffer both inserts and delete-marking. 6.purges Buffer the physical deletion operations that happen in the background 頂
81、innodb_adaptive_flushing (自適應重新整理髒頁)
0(native)
This setting causes checkpointing to operate exactly asit does in native InnoDB
1(estimate)
If the oldest modified age exceeds 1/2 of the maximum agecapacity, InnoDB starts flushing blocks every second. The number of blocksflushed is determined by [number
of modified blocks], [LSN progress speed] and[average age of all modified blocks]. So, this behavior is independent of the innodb_io_capacityvariable.
2(keep_average)
This method attempts to keep the I/O rate constant byusing a much shorter loop cycle (0.1second) than that of the other methods (1.0second). It is designed for
use with SSD cards.
82、innodb_io_capacity (調整重新整理髒頁的數量)
,innodb_io_capacity引數可以動態調整重新整理髒頁的數量,這在一定程度上解決了這一問題。
innodb_io_capacity預設是200,單位是頁,該引數的設定大小取決於硬碟的IOPS,即每秒每秒的輸入輸出量(或讀寫次數)。
83、innodb_old_blocks_time (:控制bp中資料的冷熱程度排程)
84、innodb_stats_on_metadata (是否開啟索引統計) 這個引數開啟的時候,在進行元資料查詢的時候會進行innodb更新統計,查詢元資料的SQL包括show table status、show index,或者訪問INFORMATION_SCHEMA庫的表 關閉這個引數,可以加快對於schema庫表訪問,同時也可以改善查詢執行計劃的穩定性(對於Innodb表的訪問)。 在5.6中是預設關閉的。 總結:不用他的原因就是我每次查資料字典的時候他都會進行 更新統計,這樣我就訪問慢了。 85、old-passwords (密碼加密) 如果old_passwords=1,則old_password()和password()加密結果相同都是16位。 如果old_passwords=0,則old_password()加密結果是16位。 ############mysqldump########## 86、quick (不要在將記憶體中的整個結果寫入磁碟之前快取. ) 在匯出非常巨大的表時需要此項 總結:開啟這個是為了不讓這些要匯出的大量資料佔用快取。導致佔滿快取。影響其他執行緒讀取資料。 87、max_allowed_packet (較大結果行所分配的額外記憶體) 增加該變數的值十分安全,這是因為僅當需要時才會分配額外記憶體。例如,僅當你發出 長查詢或 mysqld 必須返回大的結果行時 mysqld 才會分配更多記憶體。該變數之所以取較 小預設值是一種預防措施,以捕獲客戶端和伺服器之間的錯誤資訊包,並確保不會因偶 然使用大的資訊包而導致記憶體溢位。 如果你正是用大的 BLOB 值,而且未為 mysqld 授予 為處理查詢而訪問足夠記憶體的許可權,也會遇到與大資訊包有關的奇怪問題。如果懷疑出 現了該情況,請嘗試在 mysqld_safe 指令碼開始增加 ulimit -d 256000,並重啟 mysqld。 ############mysql客戶端########## 88、no-auto-rehash (不允許使用tab提示) 89、default-character-set (客戶端字符集) 90、connect-timeout (獲取連結多長時間超時) 獲取MySQL連線是多次握手的結果,除了使用者名稱和密碼的匹配校驗外,還有IP->HOST->DNS->IP驗證,任何一步都 可能因為網路問題導致執行緒阻塞。為了防止執行緒浪費在不必要的校驗等待上,超過connect_timeout的連線請求將會被拒絕。 #######mysqlhotcopy####### 91、interactive-timeout (伺服器關閉互動式連線前等待活動的秒數) 引數預設值:28800秒(8小時 #############後續引數########### 92、table_definition_cache (表定義緩衝池) 用於快取frm檔案用的。 表定義檔案快取相比表文件描述符快取所消耗的記憶體更小,其預設值是400 狀態值: Open_table_definitions:表定義檔案.frm被快取的數量 Opened_table_definitions:歷史上總共被快取過的,frm檔案數量 93、sync_binlog (binlog刷盤引數) 總結:這個引數是binlog寫磁碟的頻率問題,1~N(表示多少個事物就把binlog刷入磁碟) 5.5往後版本預設值是0。意思是什麼時候刷磁碟由mysql自己決定。 94、innodb_support_xa (分散式事物引數) 總結:這個分兩個功能就是外部xa事物,也就是分散式事物,但是是目測支援的並不太好。不然老師怎麼一句話不提。 第二個就是內部的xa事物也就是mysql自己管理的。他的存在也是為了解決redo和bin兩種日誌資料不一樣的問題。 他讓這兩種日誌資料一致,就能保證主從資料的一致。 95、innodb_file_format_check (用來檢查共享表空間檔案格式) 如果你共享表空間的檔案格式高於當前版本,並且你開啟檢查了,在啟動的時候就會報錯。用於保護資料。防止資料損壞 96、innodb_purge_batch_size (清理undo頁單次數量 ) 你開啟了單獨執行緒清理undo頁的時候 ,就會產生這個引數,他預設是單次清理20頁。一般不用調整。 97、innodb_replication_delay (複製延遲)為了預防有黑客入侵刪除主庫的資料,把備庫延遲可以起到保護資料的作用。 98、innodb_spin_wait_delay(自旋鎖間隙時間) 自旋鎖他是為了保護共享資源的一種鎖機制。與互斥鎖很像,但是互斥鎖,當 等待加鎖的時候會進行休眠,而自旋鎖他會迴圈檢視資源有沒有被釋放。為了不讓他頻繁的去檢視,消耗過多cpu。所以設立一個間歇引數,讓他檢視頻率降低。 99、innodb_stats_method(Innodb表對null值的處理方式) 解釋:收集 Innodb 表索引值分佈統計時,伺服器如何處理 NULL 值,該引數有 3 個可選值,nulls_equal=所有的 null 被看成相等的一個值,nulls_unequal=每個 null 被看成單獨的一個值,nulls_igored=null 被忽略,預設值為 nulls_equal。 100、innodb_stats_sample_pages (訪問元資料表不進行統計更新) 解釋:每當查詢 information_schema 元資料庫裡的表時,Innodb 還會隨機提取其 他資料庫每個表 8 個索引頁的部分資料, 來更新 information_schema.STATISTICS 表,來返回剛才你查詢的結果。預設是 8 個頁,可動態更改。如果你關閉了 innodb_stats_on_metadata,那麼這個引數被忽略。 101、innodb_strict_mode(語法嚴格模式) 他可以強制你的語法必須規範,不規範就報錯。防止之後的問題。 102、innodb_use_native_aio (系統的非同步i/o) 非同步i/o執行緒會把處理請求交給核心之後就做別的事情了,核心處理完了就告訴你。效率很高呀。 103、innodb_use_sys_malloc (記憶體分配是用innodb自己的還是用系統的,預設為1表示用系統的) ##########複製相關引數############# 104、relay_log_recovery (slave宕機了,中繼日誌損壞他怎麼處理) 開啟為好,如果有中繼日誌損壞他會重新從主庫上讀取日誌。建議開啟。 105、sync_relay_log(中繼日誌的刷盤規則) 1是slave的I/o執行緒接受binlog,把他放到系統快取區當中,之後再寫入relay_log當中,這種情況在宕機時候最多 損失一個事物,但是會消耗較多i/o。 0是接受來的binlog日誌,放到系統快取區當中,但是並不是立馬寫入relay_log當中。這種情況下如果宕機了,就不知道丟多少事物了。但是i/o會消耗較少。 106、sync_relay_log_info (執行多少個事務後將relay-log-info,sync一下檔案重新整理到磁碟) relay-log-info:記錄SQL執行緒讀取Master binlog的位置,用於Slave 宕機後根據檔案中記錄的pos點恢復Sql執行緒 107、sync_master_info (執行多少個事務後將master-info,sync一下檔案重新整理到磁碟) master-info:記錄IO執行緒讀取已經讀取到的master binlog位置,用於slave宕機後IO執行緒根據檔案中的POS點重新拉取binlog日誌 108、rpl_semi_sync_master_enabled (開關半同步) 109、rpl_semi_sync_master_timeout(半同步超時時間) 解釋:表示主庫在某次事務中,如果等待時間超過 10 秒,那麼則降級為非同步復 制模式,不再等待 SLAVE 從庫。如果主庫再次探測到,SLAVE 從庫恢復了, 則會自動再次回到半同步複製模式。預設為 10000 毫秒,等於 10 秒,這個引數 動態可調。 110、rpl_semi_sync_master_wait_no_slave(等待slave確認接收引數) 解釋:是否允許 mas
在該過程中,還會涉及另一個引數innodb_old_blocks_time。在訪問sublist of old blocks區域裡的資料塊時,並不是馬上就移動到sublist of new blocks區域,而是會先讓資料停留在sublist of old blocks區域innodb_old_blocks_time(微秒),然後再移動到sublist of new blocks區域,這樣就保證了sublist of new blocks區域裡的資料不會馬上被踢出。
84、innodb_stats_on_metadata (是否開啟索引統計) 這個引數開啟的時候,在進行元資料查詢的時候會進行innodb更新統計,查詢元資料的SQL包括show table status、show index,或者訪問INFORMATION_SCHEMA庫的表 關閉這個引數,可以加快對於schema庫表訪問,同時也可以改善查詢執行計劃的穩定性(對於Innodb表的訪問)。 在5.6中是預設關閉的。 總結:不用他的原因就是我每次查資料字典的時候他都會進行 更新統計,這樣我就訪問慢了。 85、old-passwords (密碼加密) 如果old_passwords=1,則old_password()和password()加密結果相同都是16位。 如果old_passwords=0,則old_password()加密結果是16位。 ############mysqldump########## 86、quick (不要在將記憶體中的整個結果寫入磁碟之前快取. ) 在匯出非常巨大的表時需要此項 總結:開啟這個是為了不讓這些要匯出的大量資料佔用快取。導致佔滿快取。影響其他執行緒讀取資料。 87、max_allowed_packet (較大結果行所分配的額外記憶體) 增加該變數的值十分安全,這是因為僅當需要時才會分配額外記憶體。例如,僅當你發出 長查詢或 mysqld 必須返回大的結果行時 mysqld 才會分配更多記憶體。該變數之所以取較 小預設值是一種預防措施,以捕獲客戶端和伺服器之間的錯誤資訊包,並確保不會因偶 然使用大的資訊包而導致記憶體溢位。 如果你正是用大的 BLOB 值,而且未為 mysqld 授予 為處理查詢而訪問足夠記憶體的許可權,也會遇到與大資訊包有關的奇怪問題。如果懷疑出 現了該情況,請嘗試在 mysqld_safe 指令碼開始增加 ulimit -d 256000,並重啟 mysqld。 ############mysql客戶端########## 88、no-auto-rehash (不允許使用tab提示) 89、default-character-set (客戶端字符集) 90、connect-timeout (獲取連結多長時間超時) 獲取MySQL連線是多次握手的結果,除了使用者名稱和密碼的匹配校驗外,還有IP->HOST->DNS->IP驗證,任何一步都 可能因為網路問題導致執行緒阻塞。為了防止執行緒浪費在不必要的校驗等待上,超過connect_timeout的連線請求將會被拒絕。 #######mysqlhotcopy####### 91、interactive-timeout (伺服器關閉互動式連線前等待活動的秒數) 引數預設值:28800秒(8小時 #############後續引數########### 92、table_definition_cache (表定義緩衝池) 用於快取frm檔案用的。 表定義檔案快取相比表文件描述符快取所消耗的記憶體更小,其預設值是400 狀態值: Open_table_definitions:表定義檔案.frm被快取的數量 Opened_table_definitions:歷史上總共被快取過的,frm檔案數量 93、sync_binlog (binlog刷盤引數) 總結:這個引數是binlog寫磁碟的頻率問題,1~N(表示多少個事物就把binlog刷入磁碟) 5.5往後版本預設值是0。意思是什麼時候刷磁碟由mysql自己決定。 94、innodb_support_xa (分散式事物引數) 總結:這個分兩個功能就是外部xa事物,也就是分散式事物,但是是目測支援的並不太好。不然老師怎麼一句話不提。 第二個就是內部的xa事物也就是mysql自己管理的。他的存在也是為了解決redo和bin兩種日誌資料不一樣的問題。 他讓這兩種日誌資料一致,就能保證主從資料的一致。 95、innodb_file_format_check (用來檢查共享表空間檔案格式) 如果你共享表空間的檔案格式高於當前版本,並且你開啟檢查了,在啟動的時候就會報錯。用於保護資料。防止資料損壞 96、innodb_purge_batch_size (清理undo頁單次數量 ) 你開啟了單獨執行緒清理undo頁的時候 ,就會產生這個引數,他預設是單次清理20頁。一般不用調整。 97、innodb_replication_delay (複製延遲)為了預防有黑客入侵刪除主庫的資料,把備庫延遲可以起到保護資料的作用。 98、innodb_spin_wait_delay(自旋鎖間隙時間) 自旋鎖他是為了保護共享資源的一種鎖機制。與互斥鎖很像,但是互斥鎖,當 等待加鎖的時候會進行休眠,而自旋鎖他會迴圈檢視資源有沒有被釋放。為了不讓他頻繁的去檢視,消耗過多cpu。所以設立一個間歇引數,讓他檢視頻率降低。 99、innodb_stats_method(Innodb表對null值的處理方式) 解釋:收集 Innodb 表索引值分佈統計時,伺服器如何處理 NULL 值,該引數有 3 個可選值,nulls_equal=所有的 null 被看成相等的一個值,nulls_unequal=每個 null 被看成單獨的一個值,nulls_igored=null 被忽略,預設值為 nulls_equal。 100、innodb_stats_sample_pages (訪問元資料表不進行統計更新) 解釋:每當查詢 information_schema 元資料庫裡的表時,Innodb 還會隨機提取其 他資料庫每個表 8 個索引頁的部分資料, 來更新 information_schema.STATISTICS 表,來返回剛才你查詢的結果。預設是 8 個頁,可動態更改。如果你關閉了 innodb_stats_on_metadata,那麼這個引數被忽略。 101、innodb_strict_mode(語法嚴格模式) 他可以強制你的語法必須規範,不規範就報錯。防止之後的問題。 102、innodb_use_native_aio (系統的非同步i/o) 非同步i/o執行緒會把處理請求交給核心之後就做別的事情了,核心處理完了就告訴你。效率很高呀。 103、innodb_use_sys_malloc (記憶體分配是用innodb自己的還是用系統的,預設為1表示用系統的) ##########複製相關引數############# 104、relay_log_recovery (slave宕機了,中繼日誌損壞他怎麼處理) 開啟為好,如果有中繼日誌損壞他會重新從主庫上讀取日誌。建議開啟。 105、sync_relay_log(中繼日誌的刷盤規則) 1是slave的I/o執行緒接受binlog,把他放到系統快取區當中,之後再寫入relay_log當中,這種情況在宕機時候最多 損失一個事物,但是會消耗較多i/o。 0是接受來的binlog日誌,放到系統快取區當中,但是並不是立馬寫入relay_log當中。這種情況下如果宕機了,就不知道丟多少事物了。但是i/o會消耗較少。 106、sync_relay_log_info (執行多少個事務後將relay-log-info,sync一下檔案重新整理到磁碟) relay-log-info:記錄SQL執行緒讀取Master binlog的位置,用於Slave 宕機後根據檔案中記錄的pos點恢復Sql執行緒 107、sync_master_info (執行多少個事務後將master-info,sync一下檔案重新整理到磁碟) master-info:記錄IO執行緒讀取已經讀取到的master binlog位置,用於slave宕機後IO執行緒根據檔案中的POS點重新拉取binlog日誌 108、rpl_semi_sync_master_enabled (開關半同步) 109、rpl_semi_sync_master_timeout(半同步超時時間) 解釋:表示主庫在某次事務中,如果等待時間超過 10 秒,那麼則降級為非同步復 制模式,不再等待 SLAVE 從庫。如果主庫再次探測到,SLAVE 從庫恢復了, 則會自動再次回到半同步複製模式。預設為 10000 毫秒,等於 10 秒,這個引數 動態可調。 110、rpl_semi_sync_master_wait_no_slave(等待slave確認接收引數) 解釋:是否允許 mas