Maison base de données tutoriel mysql mysql源码解读之配置文件_MySQL

mysql源码解读之配置文件_MySQL

Jun 01, 2016 pm 01:31 PM
官方下载 配置文件

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
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment activer ou désactiver eSIM sur Windows 11 Comment activer ou désactiver eSIM sur Windows 11 Sep 20, 2023 pm 05:17 PM

Si vous avez acheté votre ordinateur portable auprès d'un opérateur mobile, vous aviez probablement la possibilité d'activer une eSIM et d'utiliser votre réseau cellulaire pour connecter votre ordinateur à Internet. Avec eSIM, vous n'avez pas besoin d'insérer une autre carte SIM physique dans votre ordinateur portable car elle est déjà intégrée. C'est très utile lorsque votre appareil ne peut pas se connecter au réseau. Comment vérifier si mon appareil Windows 11 est compatible eSIM ? Cliquez sur le bouton Démarrer et accédez à Réseau et Internet > Cellulaire > Paramètres. Si vous ne voyez pas l'option « Cellulaire », votre appareil ne dispose pas de fonctionnalités eSIM et vous devez cocher une autre option, comme utiliser votre appareil mobile pour connecter votre ordinateur portable à un point d'accès. Afin d'activer et

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python Apr 11, 2023 pm 10:22 PM

Pourquoi devrions-nous écrire le fichier fixe du fichier de configuration ? Nous pouvons l'écrire directement sous forme de fichier .py, tel que settings.py ou config.py. L'avantage est que nous pouvons en importer directement des parties via l'importation dans le fichier. même projet ; mais si nous devons l'utiliser dans d'autres cas. Lors du partage de fichiers de configuration sur des plates-formes non Python, écrire un seul .py n'est pas un bon choix. À ce stade, nous devons choisir un type de fichier de configuration commun pour stocker ces parties fixes. Actuellement, les types de formats de fichiers de configuration couramment utilisés et populaires incluent principalement ini, json, toml, yaml, xml, etc. Nous pouvons accéder à ces types de fichiers de configuration via des bibliothèques standard ou des bibliothèques tierces.

Comment changer le type de réseau en privé ou public dans Windows 11 Comment changer le type de réseau en privé ou public dans Windows 11 Aug 24, 2023 pm 12:37 PM

La configuration d'un réseau sans fil est courante, mais choisir ou modifier le type de réseau peut prêter à confusion, surtout si vous n'en connaissez pas les conséquences. Si vous recherchez des conseils sur la façon de changer le type de réseau de public à privé ou vice versa dans Windows 11, lisez la suite pour obtenir des informations utiles. Quels sont les différents profils réseau dans Windows 11 ? Windows 11 est livré avec un certain nombre de profils réseau, qui sont essentiellement des ensembles de paramètres pouvant être utilisés pour configurer diverses connexions réseau. Ceci est utile si vous disposez de plusieurs connexions à la maison ou au bureau afin que vous n'ayez pas à tout configurer à chaque fois que vous vous connectez à un nouveau réseau. Les profils de réseau privé et public sont deux types courants dans Windows 11, mais généralement

Où est le profil utilisateur Win10 ? Comment configurer le profil utilisateur dans Win10 ? Où est le profil utilisateur Win10 ? Comment configurer le profil utilisateur dans Win10 ? Jun 25, 2024 pm 05:55 PM

Récemment, de nombreux utilisateurs du système Win10 souhaitent modifier le profil utilisateur, mais ils ne savent pas comment le faire. Cet article vous montrera comment définir le profil utilisateur dans le système Win10 ! Comment configurer un profil utilisateur dans Win10 1. Tout d'abord, appuyez sur les touches « Win+I » pour ouvrir l'interface des paramètres, puis cliquez pour accéder aux paramètres « Système ». 2. Ensuite, dans l'interface ouverte, cliquez sur « À propos » sur la gauche, puis recherchez et cliquez sur « Paramètres système avancés ». 3. Ensuite, dans la fenêtre contextuelle, passez à la barre d'options "" et cliquez sur "Configuration utilisateur" ci-dessous.

Installer Helm sur Ubuntu Installer Helm sur Ubuntu Mar 20, 2024 pm 06:41 PM

Helm est un composant important de Kubernetes qui simplifie le déploiement des applications Kubernetes en regroupant les fichiers de configuration dans un package appelé HelmChart. Cette approche rend la mise à jour d'un seul fichier de configuration plus pratique que la modification de plusieurs fichiers. Avec Helm, les utilisateurs peuvent facilement déployer des applications Kubernetes, simplifiant ainsi l'ensemble du processus de déploiement et améliorant l'efficacité. Dans ce guide, j'aborderai différentes manières d'implémenter Helm sur Ubuntu. Remarque : les commandes du guide suivant s'appliquent à Ubuntu 22.04 ainsi qu'à toutes les versions d'Ubuntu et aux distributions basées sur Debian. Ces commandes sont testées et devraient fonctionner correctement sur votre système. en U

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python Apr 13, 2023 am 08:31 AM

Pourquoi écrire des fichiers de configuration ? Pendant le processus de développement, nous utilisons souvent des paramètres ou des constantes fixes. Pour ces parties plus fixes et couramment utilisées, elles sont souvent écrites dans un fichier fixe pour éviter la répétition dans différents codes de module et garder le code de base propre. Nous pouvons écrire directement ce fichier corrigé dans un fichier .py, tel que settings.py ou config.py. L'avantage est que nous pouvons en importer directement des parties via l'importation dans le même projet ; sur d'autres plates-formes non Python Lors de la configuration du partage de fichiers, écrire un seul .py n'est pas un bon choix. À ce stade, nous devrions choisir un type de fichier de configuration commun

Méthode efficace pour résoudre le problème des caractères tronqués dans l'éditeur Eclipse Méthode efficace pour résoudre le problème des caractères tronqués dans l'éditeur Eclipse Jan 04, 2024 pm 06:56 PM

Une méthode efficace pour résoudre le problème confus d'Eclipse nécessite des exemples de code spécifiques. Ces dernières années, avec le développement rapide du développement logiciel, Eclipse, en tant que l'un des environnements de développement intégrés les plus populaires, a apporté commodité et efficacité à de nombreux développeurs. Cependant, vous pouvez rencontrer des problèmes de code tronqué lors de l'utilisation d'Eclipse, ce qui entraîne des problèmes de développement de projet et de lecture de code. Cet article présentera quelques méthodes efficaces pour résoudre le problème des caractères tronqués dans Eclipse et fournira des exemples de code spécifiques. Modifier les paramètres d'encodage du fichier Eclipse : dans Eclip

Elementary OS 7, la dernière version basée sur Ubuntu, est désormais disponible avec un lien de téléchargement officiel Elementary OS 7, la dernière version basée sur Ubuntu, est désormais disponible avec un lien de téléchargement officiel Jan 16, 2024 pm 10:12 PM

La distribution Linux basée sur Ubuntu, elementaryOS, a maintenant lancé la dernière version v7 (Ubuntu22.04LTS), qui est désormais disponible en téléchargement sur le site officiel. Il convient de mentionner qu'il n'est actuellement pas possible de passer d'elementaryOS 6.1 à 7. Les utilisateurs de versions antérieures peuvent lire les recommandations officielles de mise à niveau. elementaryOS7 offre une expérience d'installation et de configuration fiable et intelligente. Au moins la première connexion est très conviviale, et elle est également très simple, fluide et intelligente. Par rapport à la version précédente, elementaryOS7 a ajusté certaines de sa logique d'utilisation. Par exemple, le paramètre consistant à cliquer pour ouvrir un dossier a déjà été critiqué, donc dans la nouvelle version, les développeurs peuvent utiliser votre ordinateur comme vous le souhaitez.

See all articles