mysql
文章平均质量分 67
king_wangheng
MySQL DBA. In-deepth mysql source.
MyProject:https://github.com/HengWang/
展开
-
MySQL查询优化器源码分析
目的基于之前出现的主从库分别执行相同语句,查询计划和执行时间不同的问题。通过对源代码跟踪和调试,对MySQL的查询优化器进行分析并编写文档,为开发人员和数据库管理人员提供查询SQL语句的建议。 基础MySQL的设计架构在官方文档中给出,如下图所示。该图的具体描述和讲解,请参考官方文档或地址:http://dev.mysql.com/doc/refman/5.1/en/pluggab原创 2012-05-22 19:54:02 · 2158 阅读 · 0 评论 -
Left Join源码分析与实验测试
目的根据对查询优化器的分析,发现LEFT JOIN查询与字段的定义是否为NULL有一定的关系。鉴于《MySQL查询优化器实验分析》中对LEFT JOIN的分析和测试不足,因此单独对LEFT JOIN的处理进行进一步详细的分析和测试。测试方案1、数据表定义 数据表包括学生表(student)、课程表(course)、选课表(std_cur),具体数据表定义如下。stude原创 2012-08-21 19:23:04 · 1583 阅读 · 0 评论 -
Innodb存储引擎查询输出分析--补充
目的 根据之前《Innodb存储引擎查询输出分析》中对Innodb查询输出的逻辑处理过程的分析和测试,对Innodb的输出有了深入的了解。然而在阅读了《MySQL技术内幕--SQL编程》中P91设计的测试,并通过跟该书作者进行沟通交流。对查询输出进行补充,弥补之前没有考虑周全的地方。测试设计 该测试主要依据《MySQL技术内幕--SQL编程》P91页设计的测试。原创 2012-08-21 19:17:19 · 491 阅读 · 0 评论 -
MySQL数据库Alter database 处理逻辑
Alter database的处理过程没有像alter table那么恐怖,处理逻辑还是比较清晰的。先整理如下:1、查看数据库名是否有效 调用check_db_name()(table.cc:2876)查看数据库名是否有效,其中调用check_table_name()(table.cc:2904)函数。check_table_name这个函数名有些误导,实际是检查数据库名是否合法。原创 2012-07-31 16:19:53 · 691 阅读 · 0 评论 -
MySQL审计插件安装使用说明文档--升级版
目的基于之前设计开发的mysql审计插件,以及《MySQL审计插件安装使用说明文档》的内容介绍,对完善后的mysql审计插件进行补充和说明。主要对新增内容进行详细说明,进一步完善审计插件的功能。新增内容 针对之前版本中存在的不足,功能不够完善的问题,对MySQL审计插件进行进一步的开发和完善。新增内容主要有:1、增加审计数据库、数据表功能。之前版本中没有实现该功原创 2012-07-30 15:38:26 · 681 阅读 · 0 评论 -
Problem of " Invalid (old?) table or database name"
通过最近一段时间对该问题的跟踪,与Percona讨论组进行交流和探讨。虽然问题没有最终定位,也未能重现,但鉴于该问题可能触发一些bug。因此,整理往返的邮件,供大家参考。此外,该问题也提交到mysql官方bug列表,其中内容也供大家参考:http://bugs.mysql.com/bug.php?id=66253 。 对于之前对该问题源码的跟踪的相关内容,可以参考 mysql的"[War原创 2012-08-13 18:12:51 · 1382 阅读 · 0 评论 -
mysql的"Incorrect key file for table '/tmp/#sql_1194_12.MYI'; try to repair it"问题
线上数据库出现以下错误: Incorrect key file for table '/tmp/#sql_1194_1.MYI'; try to repair it Got an error from unknown thread, XXXX/storage/myisam/mi_write.c:223 通过查看源码,在mi_write函数的223行报错。mi_原创 2012-07-27 16:05:42 · 1409 阅读 · 0 评论 -
mysql的"[Warning] Invalid (old?) table or database name"问题
线上服务器出现[Warning] Invalid (old?) table or database name问题,通过分析binlog日志发现,在以下sql语句中出现问题,由于涉及敏感内容,用sql语法表示。 DROP TABLE IF EXISTS [TEMP_TABLE_NAME]; create temporary table [TEMP_TABLE_NA原创 2012-07-27 16:04:28 · 3100 阅读 · 0 评论 -
MySQL源码中的BUG
今天在深入学习MySQL查询优化器的过程中,发现一个低级的错误,应该是开发人员出于笔误导致的,当然这个错误不会出现问题,仅仅会在debug环境下,输出trace信息的时候会误导开发人员。 现公布如下: 本文基于mysql-5.5.20源代码进行调试开发。 sql_select.cc文件的5439行,代码如下:点击(此处)折叠或打开原创 2012-07-25 14:48:17 · 629 阅读 · 0 评论 -
MySQL内部临时表策略
通过对MySQL数据库源码的跟踪和调试,以及参考MySQL官方文档,对MySQL内部临时表使用策略进行整理,以便于更加深入的理解。使用内部临时表条件 MySQL内部临时表的使用有一定的策略,从源码中关于SQL查询是否需要内部临时表。可以总结如下: 1、DISTINCT查询,但是简单的DISTINCT查询,比如对primary key、unique key等DISTINC原创 2012-08-08 17:09:56 · 749 阅读 · 0 评论 -
MySQL审计插件安装使用说明文档
目的为了便于开发人员和DBA安装和使用MySQL审计插件,并对审计的使用和审计粒度有更全面的理解。本文对审计插件的设计思想、审计粒度、审计配置说明、安装使用、其他内容进行详细的描述。一方面便于后续的维护和开发,另一方面对于使用提供便利的查询。设计思想 MySQL的审计接口为开发审计插件提供了有利的条件,基于MySQL审计接口,参考General log设计思想,将原创 2012-07-25 14:40:36 · 1245 阅读 · 0 评论 -
MySQL源码bug#65995
之前博客《mysql源码中的bug》中描述了在调试源码时的一个bug,已经被MySQL官方确认,感兴趣的可以进行查看。尤其是有源码癖的朋友,在调试过程中可以进行参考。 MySQL官方bug地址:http://bugs.mysql.com/bug.php?id=65995原创 2012-08-08 12:18:53 · 563 阅读 · 0 评论 -
innobackupex参数说明
innobackupex [options] Options:--apply-logPrepare a backup in BACKUP-DIR by applying the transaction log file named "xtrabackup_logfile" located in the same directory. Also, creat原创 2012-06-21 18:03:19 · 1567 阅读 · 0 评论 -
xtrabackup参数说明
参数说明:The following options may be given as the first argument--print-defaultsPrint the program argument list and exit.--no-defaultsDon't read default options原创 2012-06-21 18:02:31 · 1132 阅读 · 0 评论 -
xtrabackup备份恢复测试
测试准备1、安装xtrabackup工具 以下测试安装xtrabackup备份恢复工具的二进制包,进行测试。安装的路径为mysql安装路径,本次测试mysql的安装路径为:/home/q/percona-server/。tar -xzf percona-xtraback-2.0.0-x86-64.tar.gzcp percona-xtrabackup-2原创 2012-06-21 17:48:18 · 574 阅读 · 0 评论 -
Virident FlashMAX测试
由于内容较多,在此不再赘述。详细测试过程及测试内容在:http://blog.chinaunix.net/uid-26896862-id-3263336.html。原创 2012-07-04 17:30:34 · 639 阅读 · 0 评论 -
Innodb存储引擎查询输出分析
MySQL查询逻辑以及结果的输出有规律吗?本身问题是不值得讨论的,突然被问到这个问题时,觉得有必要把其深入的实现原理搞明白。因此,通过一些实验进行验证,并跟踪源码,对现有的查询有了深入的理解。源码分析查询于存储引擎的实现密切相关,因此,以下内容主要针对Innodb存储引擎的查询处理进行深入研究。对于查询输出的入口点,本文从do_select()(sql\sql_select.cc)函数开始原创 2012-08-09 20:14:26 · 1320 阅读 · 0 评论