MySQL 5.7 學習:新增配置參數


背景:

繼上次介紹 初識 MySQL 5.6 新功能、參數完之后,剛好MySQL 5.7又GA了,在官方測試里看到,MySQL5.7在功能、性能、可用性、安全和監控上又提升了很高。現在看看和MySQL5.6對比,看多了哪些參數:(后續不定時更新

參數:

1:binlog_group_commit_sync_delay

全局動態變量,單位微妙,默認0,范圍:0~1000000(1秒)。

表示binlog提交后等待延遲多少時間再同步到磁盤,默認0,不延遲。設置延遲可以讓多個事務在用一時刻提交,提高binlog組提交的並發數和效率,提高slave的吞吐量。

2:binlog_group_commit_sync_no_delay_count

全局動態變量,單位個數,默認0,范圍:0~1000000。

表示等待延遲提交的最大事務數,如果上面參數的時間沒到,但事務數到了,則直接同步到磁盤。若binlog_group_commit_sync_delay沒有開啟,則該參數也不會開啟。

3:check_proxy_users

全局動態變量,默認關閉。

表示是否開啟代理用戶的功能,后面會在安全性上面會介紹。

4:default_authentication_plugin

全局變量,默認 mysql_native_password,可選:sha256_password

表示用戶默認的認證方式,即加密方法,后面會在安全性上面會介紹。

5:default_password_lifetime

全局動態變量,默認0,范圍:0~65535,單位天。

表示用戶密碼的過期時間,默認關閉。設置為365表示用戶密碼一年之后會過期。

6:disabled_storage_engines

全局變量,默認空。

表示禁止創建指定的存儲引擎,如:disabled_storage_engines="MyISAM,FEDERATED",如果服務器啟動開啟 --bootstrap--initialize,--initialize-insecure--skip-grant-tables 參數,disabled_storage_engines不起作用。

7:gtid_executed_compression_period

全局動態變量,默認1000,范圍:0~4294967295

表示每執行多少個事務,對 mysql.gtid_executed表進行壓縮,默認值為1000。

8:have_statement_timeout

全局變量,默認YES

表示是語句執行超時功能是否可用,默認開啟。

9:innodb_adaptive_hash_index_parts

全局變量,默認8,范圍1~512。

表示自適應哈希索引開始支持分區,避免之前單個索引導致的鎖爭用問題,默認划分成8。最大設置為512。

10:innodb_buffer_pool_chunk_size

全局變量,默認128M,范圍:1M~innodb_buffer_pool_size / innodb_buffer_pool_instances

表示為了支持online buffer pool resize,引入chunk的概念,每個chunk默認是128M,當我們在線修改buffer pool的時候,以chunk為單位進行增長或收縮。innodb要求buffer pool size是innodb_buffer_pool_chunk_size* innodb_buffer_pool_instances的倍數,如果不是,將會適當調大innodb_buffer_pool_size,以滿足要求,因此,可能會出現buffer pool的實際分配比配置文件中指定的size要大的情況。

11:innodb_buffer_pool_dump_pct

全局動態變量,5.7.7開始默認25(百分比),之前為100(百分比)。范圍:1~100(百分比)

表示控制備份buffer pool的百分比,更多的關於BP的預熱可以看這篇文章

12:innodb_default_row_format

全局動態變量。5.7.9之后默認DYNAMIC,之前默認COMPACT。可選值有:DYNAMIC、COMPACT、REDUNDANT。COMPRESSED不被系統表空間支持,但可以創建普通表。可以通過show table status like 'tb'查看表的行格式。表示指定默認的 ROW_FORMAT,關於innodb各種的行格式,可以看這篇文章

13:innodb_fill_factor

全局動態變量。默認100,范圍:10~100

表示在每個b-tree頁面排序索引構建期間其表空間的百分比,剩下的空間留給未來的指數增長。即當頁填充比例到多少之后認為是滿了。設置為100,會在頁內留出1/16的空間用於未來的增長。就像innodb一個16K的頁,最多會用15K,剩下的1K用來后續表索引的維護。對葉子和非葉子節點有效,對包含text、blog的溢出行無效。

14:innodb_flush_sync

全局動態變量,默認為ON

表示在checkpoint的時候,不會受到innodb_io_capacity的影響

15:innodb_log_checksums 

全局動態變量,默認ON。

表示在寫入redo log到文件之前,redo log的每一個block都需要加上checksum校驗位,以防止apply損壞redo log。用CRC-32C對redo log的校驗,代替了效率較低innodb_log_checksum_algorithm

16:innodb_log_write_ahead_sizehttp://mysql.taobao.org/monthly/2015/05/01/

全局動態變量,默認8192,即8K,范圍:512bytes~innodb_page_size,以字節為單位。

表示redo log寫前的塊大小。InnoDB以512字節一個block的方式對齊寫入ib_logfile文件,但文件系統一般以4096字節為一個block單位。如果即將寫入的日志文件塊不在OS Cache時,就需要將對應的4096字節的block讀入內存,修改其中的512字節,然后再把該block寫回磁盤。該參數解決這個問題,當當前寫入文件的偏移量不能整除該值時,則補0,多寫一部分數據。這樣當寫入的數據是以磁盤block size對齊時,就可以直接write磁盤,而無需read-modify-write這三步了。

17:innodb_max_undo_log_size

全局動態變量,默認1073741824byte即1024M,范圍:10M~2**64-1byte

表示限制undo log的最大值,如果超過臨界值,當啟用了 innodb_undo_log_truncate的話,undo會被標記為可truncate。即可開啟在線收縮undo日志,但需要開啟參數innodb_undo_tablespacesinnodb_undo_directory關於日志更多信息見這篇文章

18:innodb_page_cleaners

全局變量, 5.7.7之前默認1,5.7.8之后默認4,范圍:1~64

表示刷寫BP臟頁的線程數,5.6.2開始從master線程中獨立出來,5.7.4開始支持多線程flush。這個值必須小於等於innodb_buffer_pool_instances。

19:innodb_purge_rseg_truncate_frequency

全局動態變量,默認128,范圍:1~128

表示控制purge回滾段的速度,undo表空間在其上有活動段的時候,無法回收。這個參數設置,每執行多少次purge之后,purge一次回滾段。

20:innodb_temp_data_file_path

全局變量,默認ibtmp1:12M:autoextend。在數據目錄下生成一個ibtmp1大小12M的文件。

表示指定innodb臨時表空間文件的路徑、文件名和大小。所有非壓縮臨時表都使用同一個臨時表空間,壓縮的臨時表會使用tmpdir指定的目錄下每個表單獨的數據文件。可以通過 INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO查看更多信息。

21:innodb_undo_log_truncate

全局動態變量,默認OFF。

表示是否開啟在線收縮undo log。當undo log 超過innodb_max_undo_log_size定義的大小時,undo會被標記為可truncate。只對開啟了undo log的分離有效,不會對共享表空間的undo log有效。即需要設置參數innodb_undo_tablespaces(>=2)和innodb_undo_logs(>=35)和innodb_undo_directory

22:internal_tmp_disk_storage_engine

全局動態變量,默認INNODB

表示內部磁盤臨時表用的存儲引擎,5.7.6之后默認是innodb,可選值有:innodb、myisam。

23:log_builtin_as_identified_by_password

全局動態變量,默認OFF

24:log_error_verbosity

全局動態變量,默認3,范圍:1~3

表示錯誤日志記錄的信息,1:只記錄error信息;2:記錄error和warnings信息;3:記錄error、warnings和普通的notes信息。

25:log_statements_unsafe_for_binlog

全局動態變量,默認ON。

表示是否記錄error code '1592′ 信息到錯誤日志里。error code '1592′:Unsafe statement written to the binary log using statement format

26:log_syslog

全局動態變量,默認OFF

表示是否把錯誤日志記錄到syslog(/var/log/syslog)。

27:log_syslog_facility

全局動態變量,默認daemon。

表示設備錯誤號寫入到syslog,前提是log_syslog參數開啟。

28:log_syslog_include_pid

全局動態變量,默認ON。

表示是否把服務進程的id寫到syslog,前提是log_syslog參數開啟。

29:log_syslog_tag

全局動態變量,默認empty。

表示標簽被添加到服務器標識符中並寫入到syslog在錯誤日志

30:log_timestamps

全局動態變量,默認UTC,可選值:UTC、SYSTEM

表示這個變量控制日志消息寫入文件的時間,包括錯誤日志,普通日志和慢查詢日志。

31:max_execution_time

全局\會話動態變量,默認0。

表示執行select語句的超時時間,默認0:不超時。

32:mysql_native_password_proxy_users

全局動態變量,默認OFF。

表示控制是否支持代理用戶內置認證的插件,前提條件是check_proxy_users開啟,5.7.7引入該參數。

33:ngram_token_size

全局變量,默認2。范圍:1~10

表示控制innodb全文檢索分詞的長度,更多信息見:InnoDB全文索引:N-gram Parser

34:offline_mode

全局動態變量,默認OFF。

表示server層增加了離線模式(offline mode),以便於管理員的升級維護工作。特征:在設置成離線模式后,非SUPER賬戶在下次請求會被斷開,並報錯;SUPER賬戶能夠保持連接,並管理數據庫;備庫復制線程不會被中斷。

35:range_optimizer_max_mem_size

全局\會話動態變量,默認8388608即8M。

表示限制range 優化器的最大內存使用。0表示不限制。

36:rbr_exec_mode

會話動態變量,默認STRICT,可選值:STRICT、IDEMPOTENT

表示控制會話線程的模式:STRICT和IDEMPOTENT。IDEMPOTENT模式會忽視duplicate-key and no-key-found的錯誤,對於存在數據的row模式下的重放很有用,通過mysqlbinlog加 --idempotent參數。

37:require_secure_transport

全局動態變量,默認OFF。

表示客戶端連接到服務器是否需要使用某種形式的安全傳輸。如果開啟,服務器只允許使用SSL的TCP/IP連接,或使用一個套接字的連接文件。服務器拒絕不安全的連接嘗試,失敗報錯ER_SECURE_TRANSPORT_REQUIRED錯誤。此功能優先考慮SSL需求,如果定義了一個REQUIRE SSL的賬號,啟用require_secure_transport,該賬號不能使用Unix套接字文件連接。

38:sha256_password_proxy_users

全局動態變量,默認OFF。 

表示表示控制是否支持代理用戶內置認證的插件,前提條件是check_proxy_users開啟,5.7.7引入該參數。

39:show_compatibility_56

全局動態變量,5.7.8之后默認OFF。

表示從mysql5.7.6開始information_schema.global_status已經開始被舍棄,為了兼容性,此時需要打開 show_compatibility_56,否則報錯:

ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for 'show_compatibility_56'

40:slave_parallel_type

5.7.2開始支持,並行復制的模式。默認DATABASE,表示庫級別的並行復制;LOGICAL_CLOCK:基於組提交的並行復制方式。可選值:DATABASE、LOGICAL_CLOCK

表示多線程復制的模式,5.6開始支持基於庫(database)的並行復制,對於只有一個庫的,效果不好。5.7開始支持基於組提交(LOGICAL_CLOCK)的並行復制,提高復制的可用性。更多信息見:MySQL 5.7並行復制實現原理與調優

41:slave_preserve_commit_order

全局動態變量,默認0,可選值0、1。

表示是否需要嚴格保持順序,默認值為0表示並發執行忽略順序。對於多線程slaves,來保障事務在slave上執行的順序與relay log中的順序嚴格一致,只有當slave_parallel_workers開啟時有效,此時log_bin、log_slave_updates必須開啟,而且slave_parallel_type值必須為LOGICAL_CLOCK(默認值為DATABASE),如果你的事務經常是跨DB操作,那么可以考慮使用此參數限定順序。當此參數開啟時,要求任何worker線程執行事務時,只有當前事務中此之前的所有事務都執行后(被其他worker線程執行),才能執行和提交。

42:super_read_only

全局動態變量,默認OFF。5.7.8之后支持的參數。

表示5.7.8之前,服務器開啟read_only參數,表示只有具有super權限的賬號可以更新、修改表。非super權限的用戶不能修改。5.7.8之后,開啟super_read_only參數,具有super權限的賬號也不能更新和修改表,並且read_only會無效(受super_read_only控制)。

43:tls_version

全局變量,默認TLSv1,TLSv1.1。

表示允許加密服務器的連接,值是一個逗號分隔的列表,包含一個或多個協議名稱。

44:innodb_numa_interleave

全局變量,默認OFF。

表示緩沖池內存的分配策略采用interleave的方式,具體信息可以看MySQL內存分配支持NUMA

...

 

關於一些其他的變量,可以參考:innodb 5.7.11 版本 所有變量記錄Complete list of new features in MySQL 5.7

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM