Rumah pangkalan data tutorial mysql mysql源码解读之配置文件_MySQL

mysql源码解读之配置文件_MySQL

Jun 01, 2016 pm 01:31 PM
Muat turun rasmi Fail konfigurasi

bitsCN.com

    要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴。搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可。为了方便调试,也因为vs调试的直观性,我的源码工程是在windows平台下面的,下面进入正题。

    在vs环境下,选择mysqld工程,直接启动调试运行,此时我并没有指定任何配置文件,但程序依然正常运行,那么程序应该会使用默认的配置文件。首先需要确定两个问题,程序在哪些个目录下去寻找配置文件,以什么样的顺序来查找。通过调试发现,程序首先会分别收集windows系统目录、C:\根目录、执行码所在的父目录,如果配置了环境变量MYSQL_HOME,这个目录也会被搜集,然后在这些目录下进行查找my.ini文件,这里面涉及到主要接口是my_load_defaults和search_default_file。

    而实际情况是,这些目录里面没有任何一个配置文件,说明即使mysqld启动时,一个配置文件信息获取不到,也是可以成功启动的,那么这些默认值一定是在代码里面写死了的。现在我们要去代码里找到这些参数的默认值,以及他们是如何初始化的。在mysqld.cc里面,我们看到了全局变量global_system_variables的定义,该参数是一个结构变量,包含了大部分的mysql系统变量,下一步就是看这个全局变量何时被初始化的了。在vs里面,我们可以设置数据断点,通过数据断点我们能够知道特定内存地址是何时被改变的。我们以max_connections为例,将其地址设置数据断点,看看它是何时被改变的,果然确实被改过,堆栈如下图:

堆栈显示了初始化流程,通过分析各个函数即可以知道初始化逻辑。

代码如下图:

    这说明全局变量与value是一一对应的。逐个跟踪变量,找到变量all_sys_vars,该变量是一个结构,包含两个指针,初始化值为NULL,跟踪这个链表找到了问题的答案。在sys_vars.h头文件中,我们找到了all_sys_vars变量的影子,顺藤摸瓜,在sys_vars.cc文件里面,看到大量的静态对象,从名字可以看出,这些对象和变量有千丝万缕的联系。比如Sys_max_connections对象定义如下:

 

    这里很明白了,通过传递max_connections的地址,建立了与对象sys_var的联系,而所有sys_var对象都通过链表对象 all_sys_vars 管理。到目前为止,我们已经很清楚地知道mysql系统变量值初始化的来龙去脉了。通过--defaults-file我们可以指定配置文件。基本逻辑是,读取默认参数值后,会利用配置文件值对其进行覆盖,使配置文件的值生效。下面附几个主要类和接口:

类:

Sys_var_mybool

    Sys_var_typelib

        sys_var

 

Sys_var_ulong

    sys_var

 

接口:

my_search_option_files(搜索文件),

search_default_file_with_ext(读取配置文件内容),

handle_default_option(处理每一行参数)

getopt_compare_strings(查找匹配项,设置特定参数的值)

insert_dynamic(将变量插入链表)

bitsCN.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python Apr 11, 2023 pm 10:22 PM

Mengapa kita harus menulis fail tetap bagi fail konfigurasi? projek yang sama; tetapi jika kita perlu menggunakannya dalam lain Apabila berkongsi fail konfigurasi pada platform bukan Python, menulis satu .py bukanlah pilihan yang baik. Pada masa ini kita harus memilih jenis fail konfigurasi biasa untuk menyimpan bahagian tetap ini. Pada masa ini, jenis format fail konfigurasi yang biasa digunakan dan popular terutamanya termasuk ini, json, toml, yaml, xml, dll. Kami boleh mengakses jenis fail konfigurasi ini melalui perpustakaan standard atau perpustakaan pihak ketiga.

Bagaimana untuk mendayakan atau melumpuhkan eSIM pada Windows 11 Bagaimana untuk mendayakan atau melumpuhkan eSIM pada Windows 11 Sep 20, 2023 pm 05:17 PM

Jika anda membeli komputer riba anda daripada pengendali mudah alih, kemungkinan besar anda mempunyai pilihan untuk mengaktifkan eSIM dan menggunakan rangkaian selular anda untuk menyambungkan komputer anda ke Internet. Dengan eSIM, anda tidak perlu memasukkan kad SIM fizikal lain ke dalam komputer riba anda kerana ia sudah terbina dalam. Ia sangat berguna apabila peranti anda tidak dapat menyambung ke rangkaian. Bagaimana untuk menyemak sama ada peranti Windows 11 saya serasi dengan eSIM? Klik butang Mula dan pergi ke Tetapan Rangkaian & Internet > Jika anda tidak melihat pilihan "Selular", peranti anda tidak mempunyai keupayaan eSIM dan anda harus menyemak pilihan lain, seperti menggunakan peranti mudah alih anda untuk menyambungkan komputer riba anda ke tempat liputan. Untuk mengaktifkan dan

Bagaimana untuk menukar jenis rangkaian kepada peribadi atau awam dalam Windows 11 Bagaimana untuk menukar jenis rangkaian kepada peribadi atau awam dalam Windows 11 Aug 24, 2023 pm 12:37 PM

Menyediakan rangkaian wayarles adalah perkara biasa, tetapi memilih atau menukar jenis rangkaian boleh mengelirukan, terutamanya jika anda tidak tahu akibatnya. Jika anda sedang mencari nasihat tentang cara menukar jenis rangkaian daripada awam kepada peribadi atau sebaliknya dalam Windows 11, baca terus untuk mendapatkan beberapa maklumat berguna. Apakah profil rangkaian yang berbeza dalam Windows 11? Windows 11 dilengkapi dengan beberapa profil rangkaian, yang pada asasnya merupakan set tetapan yang boleh digunakan untuk mengkonfigurasi pelbagai sambungan rangkaian. Ini berguna jika anda mempunyai berbilang sambungan di rumah atau pejabat supaya anda tidak perlu menyediakan semuanya setiap kali anda menyambung ke rangkaian baharu. Profil rangkaian peribadi dan awam ialah dua jenis biasa dalam Windows 11, tetapi secara amnya

Pasang Helm pada Ubuntu Pasang Helm pada Ubuntu Mar 20, 2024 pm 06:41 PM

Helm ialah komponen penting Kubernetes yang memudahkan penggunaan aplikasi Kubernetes dengan menggabungkan fail konfigurasi ke dalam pakej yang dipanggil HelmChart. Pendekatan ini menjadikan pengemaskinian fail konfigurasi tunggal lebih mudah daripada mengubah suai berbilang fail. Dengan Helm, pengguna boleh menggunakan aplikasi Kubernetes dengan mudah, memudahkan keseluruhan proses penggunaan dan meningkatkan kecekapan. Dalam panduan ini, saya akan membincangkan cara yang berbeza untuk melaksanakan Helm pada Ubuntu. Sila ambil perhatian: Arahan dalam panduan berikut digunakan untuk Ubuntu 22.04 serta semua versi Ubuntu dan pengedaran berasaskan Debian. Arahan ini diuji dan harus berfungsi dengan betul pada sistem anda. dalam U

Di manakah profil pengguna win10 Bagaimana untuk menyediakan profil pengguna dalam Win10 Di manakah profil pengguna win10 Bagaimana untuk menyediakan profil pengguna dalam Win10 Jun 25, 2024 pm 05:55 PM

Baru-baru ini, ramai pengguna sistem Win10 ingin menukar profil pengguna, tetapi mereka tidak tahu cara melakukannya Artikel ini akan menunjukkan kepada anda cara menetapkan profil pengguna dalam sistem Win10! Bagaimana untuk menyediakan profil pengguna dalam Win10 1. Pertama, tekan kekunci "Win+I" untuk membuka antara muka tetapan, dan klik untuk memasukkan tetapan "Sistem". 2. Kemudian, dalam antara muka yang dibuka, klik "Perihal" di sebelah kiri, kemudian cari dan klik "Tetapan Sistem Lanjutan". 3. Kemudian, dalam tetingkap pop timbul, tukar ke bar pilihan "" dan klik "Konfigurasi Pengguna" di bawah.

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python Apr 13, 2023 am 08:31 AM

Mengapa menulis fail konfigurasi Semasa proses pembangunan, kami sering menggunakan beberapa parameter atau pemalar tetap. Untuk bahagian yang lebih tetap dan biasa digunakan ini, ia sering ditulis ke dalam fail tetap untuk mengelakkan pengulangan dalam kod modul yang berbeza dan memastikan kod teras bersih. Kami boleh terus menulis fail tetap ini ke dalam fail .py, seperti settings.py atau config.py Kelebihan ini ialah kami boleh mengimport terus bahagiannya melalui import dalam projek yang sama; pada platform bukan Python yang lain Apabila mengkonfigurasi perkongsian fail, menulis satu .py bukanlah pilihan yang baik. Pada masa ini kita harus memilih jenis fail konfigurasi biasa

Kaedah yang berkesan untuk menyelesaikan masalah watak bercelaru dalam editor eclipse Kaedah yang berkesan untuk menyelesaikan masalah watak bercelaru dalam editor eclipse Jan 04, 2024 pm 06:56 PM

Kaedah yang berkesan untuk menyelesaikan masalah eclipse yang bercelaru memerlukan contoh kod khusus Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat pembangunan perisian, eclipse, sebagai salah satu persekitaran pembangunan bersepadu yang paling popular, telah memberikan kemudahan dan kecekapan kepada banyak pembangun. Walau bagaimanapun, anda mungkin menghadapi masalah kod bercelaru apabila menggunakan eclipse, yang membawa masalah kepada pembangunan projek dan membaca kod. Artikel ini akan memperkenalkan beberapa kaedah yang berkesan untuk menyelesaikan masalah aksara bercelaru dalam Eclipse dan memberikan contoh kod khusus. Ubah suai tetapan pengekodan fail eclipse: dalam eclip

Apakah cara yang betul untuk membaca dan menulis konfigurasi dalam projek Python? Apakah cara yang betul untuk membaca dan menulis konfigurasi dalam projek Python? May 09, 2023 pm 07:16 PM

1. Kaedah menulis konfigurasi dalam fail Python adalah sangat mudah, tetapi ia mempunyai masalah keselamatan yang serius konfigurasi adalah bersamaan dengan didedahkan kepada seluruh dunia Sudah tentu, kaedah mudah ini juga boleh digunakan apabila fail konfigurasi tidak mengandungi maklumat sensitif. 2. Gunakan fail konfigurasi luaran untuk memisahkan fail konfigurasi dan kod Biasanya, format fail json, yaml atau ini digunakan untuk menyimpan konfigurasi. Menggabungkan pembolehubah persekitaran dan perpustakaan ular sawa untuk membaca fail luaran Pertama sekali, pembangunan biasanya tidak bersentuhan dengan persekitaran penjanaan, jadi fail konfigurasi persekitaran penjanaan ditulis oleh operasi dan penyelenggaraan menulis konfigurasi yang diperlukan oleh permohonan itu, ia diletakkan di

See all articles