七 19 探索MYSQL源代码–添加一个VARIABLE 发布时间:2011 年 7 月 19 日 发布者: OurMySQL mysql里的variable 有一部分是来自于my.cnf里的option。为了添加一个可配置的variale, 我们先来添加一个option, 名字是options_hoterran,没有s。 继续阅读全文 →
七 19 探索MYSQL源代码–SQL历险记 发布时间:2011 年 7 月 19 日 发布者: OurMySQL 本文从一个select语句的执行过程出发, 遍历MySQL的多个几子系统. 继续阅读全文 →
七 19 探索MYSQL源代码-BINLOG里的时间 发布时间:2011 年 7 月 19 日 发布者: OurMySQL set timestamp 就是修改start_time, 而从上面的now()可以看到,now()取的就是start_time。 replication就是依靠存储在event里的set timestamp 来保证now函数的时间一致的。 继续阅读全文 →
七 18 给PYTHON的MYSQLDB模块加功能 发布时间:2011 年 7 月 18 日 发布者: OurMySQL 使用Python操作MySQL数据库的时候常使用MySQLdb这个模块。今天在开发的过程发现MySQLdb.connect有些参数没法设置。通过这个页面我们可以看到在connect的时候,可以设置的option和client_flags和MySQL c api相比差不少。一个很重要的参数 MYSQL_OPT_READ_TIMEOUT没法设置,这个参数如果不设置,极致状况MySQL处于hang住,自动切换IP漂移,客户端无法重连到新MySQL。 继续阅读全文 →
七 18 探索MYSQL源代码-在SHOW PROCESSLIST里添加字段 发布时间:2011 年 7 月 18 日 发布者: OurMySQL show processlist是诊断MySQL常用的命令,它会列出THD对象里所有的线程当前状况。下面将为show processlist添加一个新的列,表示当前连接查询之后返回的行数,字段名为my_row_count。 继续阅读全文 →
七 18 探索MYSQL源代码-客户端连接过程和用户认证体系 发布时间:2011 年 7 月 18 日 发布者: OurMySQL 本文从源代码角度详细解释使用mysql客户端连上MySQL的服务端的过程以及通过用户认证的过程。 继续阅读全文 →
七 18 MYSQL DAEMON PLUGIN EXAMPLE 发布时间:2011 年 7 月 18 日 发布者: OurMySQL 5.1 版本开始MySQL开始支持plugin API,允许在mysqld运行时载入或者卸载组件,而不需要重启mysqld。plugin API涵盖了UDF、full-text、advanced schema等功能,其中的daemon plugin个人认为是非常的有用。其功能是在plugin载入后可以创建额外的后台线程于mysqld主线程一同协同工作。 继续阅读全文 →
七 18 利用PLUGIN更快的添加STATUS VARIABLES 发布时间:2011 年 7 月 18 日 发布者: OurMySQL 在MySQL里添加一个system、status variables的比较复杂的,需要修改sql/sql_show.cc,sql/mysqld.cc, 还要修改sql/sql_yacc.yy,然后重新编译等等,前面的文章可见其复杂度,很容易出错。daemon plugin 除了允许添加后台线程,也允许添加status,且不需要修改mysqld的代码。 继续阅读全文 →
三 30 InnoDB的多版本一致性读的实现 发布时间:2011 年 3 月 30 日 发布者: OurMySQL InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非常快,却付出了查询性能降低的代价。 继续阅读全文 →