摘要: 编译DBD 项目中经常使用perl,但perl在连接数据库时,需要依赖DBI,DBD驱动,但默认安装DBD驱动时,需要依赖数据库的lib库。 比如perl连接MySQL,需要安装MySQL client。 下面使用静态编译,把DBI, DBD, MySQL client的libclient库静态... 阅读全文
posted @ 2014-06-19 21:16 xpchild 阅读(521) 评论(0) 推荐(0) 编辑
摘要: MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构变更的一致性。MDL锁的加锁模式和源码上的组织上和上一篇blog中MySQL表锁的实现方式一致,都采用了【mutex+condition+queue】来实现并发,阻塞,唤醒的控制。下面就来看看MD... 阅读全文
posted @ 2014-06-15 23:22 xpchild 阅读(3272) 评论(0) 推荐(1) 编辑
摘要: 上一篇介绍了MySQL源码中保护内存结构或变量的锁,这里开始介绍下MySQL事务中的表锁。注1: 在表锁的实现上面,使用【mutex+condition+queue】的结构实现并发,阻塞,唤醒的表锁功能。注2: 本文进行的一些实验,重要的配置项:1. autocommit=02. tx_isol... 阅读全文
posted @ 2014-06-15 09:17 xpchild 阅读(1053) 评论(0) 推荐(0) 编辑
摘要: MySQL的锁: MySQL内部有很多种类的锁,按照用途不同,可以分为两类: 1. 保护内存结构的锁,实现同步机制 server层对于线程共享的变量,基本上使用mutex,rwlock来做保护。 innodb层会增加使用spinlock自旋锁 2... 阅读全文
posted @ 2014-06-11 16:52 xpchild 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 背景: MySQL经常会遇到Too many open files,MySQL上的open_files_limit和OS层面上设置的open file limit有什么关系? 源码中也会看到不同的数据结构,TABLE, TABLE_SHARE,跟表是什么关系? MySQL flush ... 阅读全文
posted @ 2014-06-10 19:55 xpchild 阅读(2981) 评论(0) 推荐(0) 编辑
摘要: 前一篇介绍了cost的计算方法,下面测试一下两表关联的查询:测试用例CREATE TABLE `xpchild` ( `id` int(11) NOT NULL, `name` varchar(100) DEFAULT NULL, `c1` int(11) DEFAULT NULL, `c2... 阅读全文
posted @ 2014-06-09 20:35 xpchild 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 记录MySQL 5.5上,优化器进行cost计算的方法。第一篇: 单表的cost计算数据结构:1. table_share: 包含了表的元数据,其中索引部分:key_info:一个key的结构体,代表一个索引,包含了:key_length:key的长度key_parts:key一共有多少个colum... 阅读全文
posted @ 2014-06-05 17:39 xpchild 阅读(2383) 评论(0) 推荐(0) 编辑
摘要: 完成了sql的解析过程后,开始进入优化器:调用的流程分为: mysql_select: JOIN::prepare: JOIN::optimize: JOIN::exec: prepare过程: 组装各个组件,包括:stepup tables, fields, con... 阅读全文
posted @ 2014-06-05 11:35 xpchild 阅读(816) 评论(0) 推荐(0) 编辑
摘要: sql请求发送到server端,需要经过解析器生成内部的数据结构对象,以方便进行优化和生成执行计划。解析器主要做了两件事情,词法分析和语法分析。词法和语法分析:mysql使用lex词法分析器,yacc语法分析器进行分析,最后保存到lex对象结构中。例如: select id, name fr... 阅读全文
posted @ 2014-05-15 15:24 xpchild 阅读(3284) 评论(0) 推荐(0) 编辑
摘要: MySQL源码自定义了hash表,因为hash表具有O(1)的查询效率,所以,源码中大量使用了hash结构。下面就来看下hash表的定义:【源代码文件include/hash.h mysys/hash.c】typedef uint my_hash_value_type;typedef uchar *... 阅读全文
posted @ 2014-05-08 12:58 xpchild 阅读(757) 评论(0) 推荐(0) 编辑