Rumah  >  Artikel  >  pangkalan data  >  Perbincangan mendalam tentang kegigihan parameter global dalam MySQL 8.0

Perbincangan mendalam tentang kegigihan parameter global dalam MySQL 8.0

青灯夜游
青灯夜游ke hadapan
2021-10-15 18:32:421881semak imbas

Artikel ini akan membawa anda melalui ciri baharu dalam MySQL 8.0: kegigihan parameter global Saya harap ia akan membantu anda!

Perbincangan mendalam tentang kegigihan parameter global dalam MySQL 8.0

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]

Kegigihan parameter global

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!

Tulis pada penghujung

Kod utama: Komit f2bc0f89b7f94cc8fe963d08157413a01d14d9>masukkan

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
Video Pengaturcaraan

! !

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!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam