请教MySQL执行查询语句时数据库崩溃重启问题
MySQL 随着版本不停迭代,崩溃的现象越来越少,也越来越隐蔽。
一旦遇到生产环境上的 MySQL 崩溃,就需要保留现认局比环见场信息,供分析用。虽然 MySQL 的 error log 中会打印部分信息,但对于比较隐蔽的崩溃,往往显得力不从心。
通过开启操作系统级别、放开用户限制、启用 MySQL 参数三个步骤,我们启用了 MySQL 的 coredump 功能,使得 MySQL 崩溃时留下了足够的线索。
对于复杂崩溃的分析,还是需要将 coredump 来自交给专业的研发工程师手里,或者提交给 MySQL 开发团队。
不过不管是什么场景,能提供一份 coredum生p,所有技术人员都会感谢你的。
MySql查询语句是如何执行的
1.连接服务器
通过TCP连接,默认端口3306
2.查询缓存,如果匹配,则返回结果,否则继续下一步
3.解析器Parser进行解析,包括词法解析和语法解析
4.进行预处理,优化器optimizer生成执行计划
5.执行计划调用存储引擎的API函数,得到查询结果
6.查询结果返回客户端,并更新缓存
如何查看mysql执行过的语句
开启记录MySQL执行过SQL语句的方法很简单:编辑f文件,在[mysqld]节下面添加:/sql_row.log行(日志的路径自己根据需要定义)。
[mysqld]
/mysql
/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
/sql_row.log
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
/mysqld.log
/mysqld.pid
修改完毕后,记得重启 MySQL:
service mysql restart
# 或者
/mysqld stop
/mysqld start
现在你去 / 路径下的 sql_row.log 文件应该是能够看到 MySQL 什么时候执行了哪些程序了。