mysql一些引數的介紹

tangguowuvv發表於2018-06-22
最近在阿里雲新上了一個mysql的專案,順便調整了上面的幾個引數的配置,有一些個引數還是值得注意的:
max_connections:表示資料庫的最大連線數。如果經常出現1040 too many connections,那麼就需要把這個引數適當調大。但是這個連線數不是越大越好,過多的連線會浪費記憶體的資源,影響mysql伺服器的效能。
back_log:表示連線數到達max_connections之後,多少個請求可以被存在堆疊中。只有預計在一個短時間內有很多連線,才需要增加該引數的值。作業系統在這個佇列大小上也有限制,設定back_log高於作業系統的限制將是無效的。
default_character_set:這個引數影響了character_set_client(mysql server假定客戶端傳送的查詢使用的字符集),character_set_connection(mysql server接收客戶端釋出的查詢請求後,將其轉化為character_set_connection指定的字符集)和character_set_results(mysql server把結果集和錯誤資訊轉換為character_set_results指定的字符集,併傳送給客戶端)。這個引數的修改影響客戶端和伺服器的互動過程的字符集。
character_set_server:這個引數影響了character_set_server(mysql server預設字符集)和character_set_database(資料庫預設字符集)這個引數。修改這個引數才會影響資料庫的字符集,因此如果想要對資料庫的字符集做出改變,可以修改character_set_server,比如:這是一個APP專案,涉及到大量的Emoji表情符號,那麼就需要使用utf8mb4這個4位元組的字符集了,在這裡,就需要將原來的utf8改為utf8mb4。
event_cheduler:這個引數影響了定時任務,由於msyql的重啟會導致定時任務的失效,因此需要將這個引數改為ON,使得定時任務不會失效。
max_allowed_packet:這個引數設定過小就會出現packet for query is too large這個錯誤,需要適當的將此引數擴大,大小為1024的整數倍,但是不宜將此引數擴的太大,不然作業系統記憶體不夠,這個引數還是會失效的。
sort_buffer_size:表示排序快取區的大小,這個值越大,進行排序的速度越快。
read_buffer_size:表示每個執行緒連續掃描時為掃描的每個表分配的緩衝區的大小。當執行緒從表中連續讀取記錄時需要用到這個緩衝區。
read_rnd_buffer_size:表示為每個執行緒保留的緩衝區的大小,與read_buffer_size相似。但主要用於儲存按特定順序讀取出來的記錄,如果頻繁進行多次連續掃描,可以增加該值。
innodb_flush_log_at_trx_commit:表示何時將重做日誌緩衝區的資料寫入日誌檔案。該引數對於innodb引擎非常重要,有3個值,分別為0、1和2。值為0時表示每隔1秒將重做日誌緩衝區資料寫入日誌檔案;值為1時表示每次提交事務時將重做日誌緩衝區資料寫入日誌檔案;值為2時表示每次提交事務時將資料寫入重做日誌緩衝區,每隔1秒再將重做日誌緩衝區資料寫入日誌檔案。該引數的預設值為1,預設值值1安全性最高,但是每次事務提交或事務外的指令都需要把日誌寫入(flush)硬碟,是比較費時的;0值更快一點,但安全性比較差;2之日誌仍然會每秒戲而已磁碟,所以即使出現故障,一般也不會丟失超過1~2秒的資料。
interactive_timeout:表示伺服器在關閉連線前等待的秒數。
wait_timeout:表示伺服器在關閉一個連線時等待的秒數。
sort_buffer_size:表示每個需要進行排序的執行緒分配的緩衝區的大小。增加這個引數的值可以提高order by 或group by的速度。
thead_cache_size:表示可以複用的執行緒的數量。如果有很多新的執行緒,為了提高效能可以增大該引數的值。
innodb_buffer_pool_size:表示innodb型別的表和索引的最大快取。這值越大,查詢的速度就會越快,但是這個值太大會影響作業系統的效能。
query_cache_size:表示查詢緩衝區的大小。該引數需要和query_cache_type配合使用。當query_cache_type=0時,所有的查詢都不使用查詢緩衝區,但是query_cache_type=0並不會釋放所配置的緩衝區記憶體。當query_cache_type=1時,所有的查詢都將使用查詢緩衝區,除非在查詢語句中指定SQL_NO_CACHE,如select SQL_NO_CACHE * from table。當query_cache_type=2時,只有在查詢語句中使用SQL_CACHE關鍵字,查詢才會使用查詢緩衝區。使用查詢緩衝區可以提高查詢速度,這種方式只適用於修改操作少且經常執行相同的查詢操作的情況。可以透過flush query cache來重新整理緩衝區,清理查詢緩衝區中碎片。
table_cache:表示同時開啟表的個數。這個值越大,能夠同時開啟的表的個數越多。這個值不是越大越好,因為同時開啟的表太多會影響作業系統的效能。
key_buffer_size:表示索引緩衝區的大小。索引緩衝區所有的執行緒共享。增加索引緩衝區可以得到更好的處理的索引(對所有讀和多重寫)。當然,這個值也不是越大越好,它的大小取決於記憶體的大小,如果這個值太大,導致作業系統頻繁換頁,會降低系統效能。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30485601/viewspace-2156491/,如需轉載,請註明出處,否則將追究法律責任。

相關文章