阅读Mysql源代码的过程中,我们要面对很多服务器系统变量和系统状态:
系统变量
(一)线程相关
thread_cache_size:
thread_concurrency:
thread_handling:
thread_stack:
(二)其他
init_connect:
A string to be executed by the server for each client that connects. The string consists of one or more SQL statements, separated by semicolon characters.
auto_commit:
是否自动提交,默认是开启的。当你执行完一个更新时,MySQL 将立刻将更新存储到磁盘上。
在命令行中输入set autocommit = 0;能暂时解决这个问题,但是,一旦重新启动mysql,mysql 又默认的 autocommit=1;
也可以在my.ini 中设置,或者mysqld启动时加变量autocommit。
[mysqld]
init_connect= 'SET AUTOCOMMIT=0 '
back_log
是要求MySQL能有的连接数量。
当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
如果期望在一个短时间内有很多连接,你需要增加它。
也就是说,如果MySql的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。
另外,这值(back_log)限于您的操作系统对到来的TCP/IP连接的侦听队列的大小。
你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大值),试图设定back_log高于你的操作系统的限制将是无效的。
(三)binlog
系统状态变量
(一)线程
Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
Threads_created :代表从最近一次服务启动,已创建线程的数量。
Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。
(二)查询缓冲
(三)COM_前缀的状态变量
记录命令执行的次数。