Artikel ini akan membawa anda melalui ciri baharu dalam MySQL 8.0: kegigihan parameter global Saya harap ia akan membantu anda!
Sejak versi pertama MySQL 8.0.11
dikeluarkan pada 2018, versi MySQL telah dikemas kini dan diulang kepada 8.0.26
Berbanding dengan versi 5.7 yang stabil, 8.0 adalah Peningkatan prestasi tidak boleh dipertikaikan!
Apabila semakin banyak perusahaan mula menggunakan MySQL versi 8.0, ia adalah satu cabaran dan peluang untuk DBA!
Artikel ini membincangkan terutamanya ciri baharu versi MySQL 8.0: Kegigihan parameter global. [Cadangan berkaitan: tutorial video mysql]
Versi MySQL 8.0 menyokong pengubahsuaian dalam talian parameter global dan kegigihan, dengan menambah Oleh menggunakan kata kunci PERSIST
, anda boleh mengekalkan parameter yang diubah suai ke dalam fail konfigurasi baharu (mysqld-auto.cnf) Apabila anda memulakan semula MySQL, anda boleh mendapatkan parameter konfigurasi terkini daripada fail konfigurasi ini!
Log Kerja Sepadan [WL#8688]: https://dev.mysql.com/worklog/task/?id=8688
Dayakan ciri ini dan gunakan sintaks khusus SET PERSIST
untuk menetapkan sebarang pembolehubah global yang boleh diubah suai secara dinamik! Pernyataan
- SET PERSIST
boleh mengubah suai nilai pembolehubah dalam ingatan dan menulis nilai yang diubah suai kepada data mysqld-auto.cnf dalam direktori. Kenyataan
- SET PERSIST_ONLY
tidak akan mengubah suai nilai pembolehubah dalam ingatan, tetapi hanya akan menulis nilai yang diubah suai⼊ mysqld-auto.cnf dalam direktori data.
Ambil parameter max_connections
sebagai contoh:
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)
Sistem akan menjana fail yang mengandungi mysqld-auto.cnf dalam direktori data dalam json
format , diformatkan seperti berikut, apabila my.cnf dan mysqld-auto.cnf wujud pada masa yang sama, yang kedua mempunyai keutamaan yang lebih tinggi.
{ "Version": 1, "mysql_server": { "max_connections": { "Value": "300", "Metadata": { "Timestamp": 1632575065787609, "User": "root", "Host": "localhost" } } } }
Nota: Walaupun anda mengubah suai nilai konfigurasi melalui SET PERSIST
dan tiada perubahan, ia akan ditulis ke fail mysqld-auto.cnf. Tetapi anda boleh memulihkan nilai lalai awal dengan menetapkannya kepada nilai DEFAULT
!
Jika anda ingin memulihkan parameter max_connections
kepada nilai lalai awalnya, cuma laksanakan:
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)
Jika anda ingin mengalih keluar semua parameter kegigihan global, laksanakan sahaja:
mysql> RESET PERSIST; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; Empty set (0.00 sec)
Sudah tentu, anda juga boleh memulakan semula MySQL selepas memadamkan fail mysqld-auto.cnf!
Kod utama: Komit f2bc0f89b7f94cc8fe963d08157413a01d14d9>masukkan
<🎜 fungsi (8.0.0):Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:
接口函数大多定义在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
Atas ialah kandungan terperinci Perbincangan mendalam tentang kegigihan parameter global dalam MySQL 8.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!