MySQL源码详解一 mysqld启动

从今天开始我每周都会更新一篇文章,用于深度、详细、全方位的解释MySQL5.7源码

本人用的环境是MacOS 10.11.6,编译器用的是Xcode 7.3.1,mysql版本是5.7.12


 

既然是看源码,开始当然是找main方法,mysql服务端的启动入口位于mysqld/main.cc中,代码很简单,加上注释也不过十行

也就是说真正执行的就是这个mysqld_main这个函数,我们来看看他到底做了哪些事情,点进去之后会发现很多#ifndef _WIN32之类预编译指令,由于我们的电脑并非Windows,所以这些代码直接忽略,这个函数做的第一件事情当然是各种初始化工作,本节内容也就详细说一下这部分代码。

/* 
  main() for mysqld.
  Calls mysqld_main() entry point exported by sql library.
*/
extern int mysqld_main(int argc, char **argv);
int main(int argc, char **argv)
{
  return mysqld_main(argc, argv);
}


  首先是预初始化performance_schema相关的一些全局变量,这些全局变量可以理解为是performance_schema里面的内存表

   这里都是些重复的代码,就截取一部分好了,说到这就顺便简单介绍一下performance_schema这个新的数据库,这个库是一个确实存在的库,这个看mysql的存储数据的文件夹就能看出,其中的内存表由数据库自己维护,用于记录监控信息,不允许用户直接写。

他包括的表主要包含以下几类:

1.配置表,这些表是能手工修改的,用于配置管理的对象

既然都说到这里了就顺便说一下配置表的用法,配置表一共有5个,分别是

setup_actors:用于配置哪些主机、用户是否开启监控和监控内容是否储存,默认是全部主机全部用户都开启,值得一提的是这个表的role字断是个暂时没用的字段(修改后新连接的客户端)

setup_consumers:根据目标用于配置哪些事件会被监控,例如语句、事务 (修改后立刻生效)

setup_instruments:根据工具配置哪些事件会被收集,例如select功能,createtable功能 (修改后部分内容生效)

setup_objects:那些对象被监控,表、函数等 (修改后立刻生效) 

setup_timers:监控使用的计时器种类 (修改后立刻生效)

2.瞬时表,就是那些当前监控数据的表,通常以current结尾

3.历史表,记录了历史的监控数据,通常以history和history_long结尾

4.按照一定维度的汇总表,通常是summary_by什么

5.实例表,记录了那些类型的对象实例被监控了,这里文档中写的是instance所以我翻译成实例,其实这个概念有一点绕,我解释一下,mysql的某一种监控会监控一些对象,这一组对应关系以及相关的信息就是一个实例

PFS_builtin_memory_class builtin_memory_program;
...
...
PFS_builtin_memory_class builtin

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值