深入討論MySQL 8.0中的全域參數持久化
這篇文章帶大家來了解MySQL 8.0中的新功能:全域參數持久化,希望對大家有幫助!
自2018 年發布第一版MySQL 8.0.11
正式版至今,MySQL 版本已經更新迭代到8.0.26
,相對於穩定的5.7 版本來說,8.0 在效能上的提升是毋庸置疑的!
隨著越來越多的企業開始使用 MySQL 8.0 版本,對於 DBA 來說是一個挑戰,也是一個機會!
本文主要討論下 MySQL 8.0 版本的新功能:全域參數持久化。 【相關推薦:mysql影片教學】
全域參數持久化
MySQL 8.0 版本支援線上修改全域參數並持久化,透過加上PERSIST
關鍵字,可以將修改後的參數持久化到新的設定檔(mysqld-auto.cnf)中,當重新啟動MySQL 時,可以從該設定檔取得到最新的設定參數!
對應的Worklog [WL#8688]:https://dev.mysql.com/worklog/task/?id=8688
啟用這個功能,使用特定的語法SET PERSIST
來設定任意可動態修改的全域變數!
- SET PERSIST
#語句可以修改記憶體中變數的值,並且將修改後的值寫入⼊數據⽬錄中的mysqld-auto.cnf 中。
- SET PERSIST_ONLY
#語句不會修改記憶體中變數的值,只是將修改後的值寫成⼊資料⽬錄中的mysqld-auto.cnf 中。
以max_connections
參數為例:
mysql> select * from performance_schema.persisted_variables; Empty set (0.00 sec) mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 151 | | mysqlx_max_connections | 100 | +------------------------+-------+ 2 rows in set (0.00 sec) mysql> set persist max_connections=300; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 300 | +-----------------+----------------+ 1 row in set (0.00 sec)
系統會在資料目錄下產生一個包含json
格式的mysqld -auto.cnf 的文件,格式化後如下所示,當my.cnf 和mysqld-auto.cnf 同時存在時,後者俱有更高優先權。
{ "Version": 1, "mysql_server": { "max_connections": { "Value": "300", "Metadata": { "Timestamp": 1632575065787609, "User": "root", "Host": "localhost" } } } }
注意: 即使你透過 SET PERSIST
修改配置的值並沒有任何變化,也會寫入到 mysqld-auto.cnf 檔案中。但你可以透過設定成 DEFAULT
值的方式來恢復初始預設值!
如果想要恢復max_connections
參數為初始預設值,只需要執行:
mysql> set persist max_connections=DEFAULT; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 151 | +-----------------+----------------+ 1 row in set (0.00 sec)
如果想要移除所有的全域持久化參數,則只需執行:
mysql> RESET PERSIST; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; Empty set (0.00 sec)
當然,刪除mysqld-auto.cnf 檔案後,重啟MySQL 也可以!
寫在最後
主要代碼:Commit f2bc0f89b7f94cc8fe963d08157413a01d14d994
主要入口函數(8.0.0):
接口函数大多定义在sql/persisted_variable.cc文件中: 启动时载入mysqld-auto.cnf的内容: Persisted_variables_cache::load_persist_file(); 通过json解析合法性,并存入内存 将文件中读取的配置进行设置: Persisted_variables_cache::set_persist_options 运行SET PERSIST命令时,调用Persisted_variables_cache::set_variable 更新内存中存储的值 写入mysqld-auto.cnf文件中: Persisted_variables_cache::flush_to_file
更多程式相關知識,請造訪:程式設計影片! !
以上是深入討論MySQL 8.0中的全域參數持久化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

是的,可以在 Windows 7 上安裝 MySQL,雖然微軟已停止支持 Windows 7,但 MySQL 仍兼容它。不過,安裝過程中需要注意以下幾點:下載適用於 Windows 的 MySQL 安裝程序。選擇合適的 MySQL 版本(社區版或企業版)。安裝過程中選擇適當的安裝目錄和字符集。設置 root 用戶密碼,並妥善保管。連接數據庫進行測試。注意 Windows 7 上的兼容性問題和安全性問題,建議升級到受支持的操作系統。

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

聚集索引和非聚集索引的區別在於:1.聚集索引將數據行存儲在索引結構中,適合按主鍵查詢和範圍查詢。 2.非聚集索引存儲索引鍵值和數據行的指針,適用於非主鍵列查詢。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL 和 MariaDB 可以共存,但需要謹慎配置。關鍵在於為每個數據庫分配不同的端口號和數據目錄,並調整內存分配和緩存大小等參數。連接池、應用程序配置和版本差異也需要考慮,需要仔細測試和規劃以避免陷阱。在資源有限的情況下,同時運行兩個數據庫可能會導致性能問題。

MySQL 數據庫中,用戶和數據庫的關係通過權限和表定義。用戶擁有用戶名和密碼,用於訪問數據庫。權限通過 GRANT 命令授予,而表由 CREATE TABLE 命令創建。要建立用戶和數據庫之間的關係,需創建數據庫、創建用戶,然後授予權限。

MySQL支持四種索引類型:B-Tree、Hash、Full-text和Spatial。 1.B-Tree索引適用於等值查找、範圍查詢和排序。 2.Hash索引適用於等值查找,但不支持範圍查詢和排序。 3.Full-text索引用於全文搜索,適合處理大量文本數據。 4.Spatial索引用於地理空間數據查詢,適用於GIS應用。
