探索MYSQL源代码-客户端连接过程和用户认证体系
分类: MySQL高级应用 | 发布: OurMySQL | 来源:运维和开发
标签: mysql_sourcecode, 源代码, 认证, 连接
本文从源代码角度详细解释使用mysql客户端连上MySQL的服务端的过程以及通过用户认证的过程。
|
本站Feed
本文从源代码角度详细解释使用mysql客户端连上MySQL的服务端的过程以及通过用户认证的过程。
5.1 版本开始MySQL开始支持plugin API,允许在mysqld运行时载入或者卸载组件,而不需要重启mysqld。plugin API涵盖了UDF、full-text、advanced schema等功能,其中的daemon plugin个人认为是非常的有用。其功能是在plugin载入后可以创建额外的后台线程于mysqld主线程一同协同工作。
在MySQL里添加一个system、status variables的比较复杂的,需要修改sql/sql_show.cc,sql/mysqld.cc, 还要修改sql/sql_yacc.yy,然后重新编译等等,前面的文章可见其复杂度,很容易出错。daemon plugin 除了允许添加后台线程,也允许添加status,且不需要修改mysqld的代码。
InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非常快,却付出了查询性能降低的代价。
这篇文章主要是从原理, 手册和源码分析在PHP中查询MySQL返回大量结果时, 内存占用的问题, 同时对使用MySQL C API也有涉及.