深入MySQL源码 学习方法 何登成专家
MYSQL 技术圈
有哪些做得好,又注重分享的公司: Oracle MySQL, MariaDB, Percona,Google, FB, Twitter, Taobao, NetEase… 有哪些值得关注的个人: Mark Callaghan、 Jeremy Cole、 Dimitri、 Peter ,Zaitsev、 Yoshinori Matsunobu … 微博上有哪些值得关注的账号: @姜承尧、 @淘宝丁奇、 @plinux、 @那海蓝蓝 … 业界有哪些好的会议: Percona Live、 FOSDEM、 MySQL Connect … 哪里去提问和找答案: Google、 StackOverflow …
跟踪MySQL每个发行版和Bugs
关于这一点,个人曾经跟霸爷@淘宝褚霸有过一次讨论。
霸爷说:在过去几年,跟踪Erlang,把Erlang语言每个版本/每个提交的变
更都看了一遍;
我说我没有这么执着,但是我也把MySQL .1以来各版本的Release Notes、
Bug Fix都跟踪过,新增的功能,都阅读过代码,调试跟踪分析过其实现;
要想深入了解MySQL,或者是其他的系统,你需要做到几年如一日的
跟踪其发展,才能真正的做到不落伍;
一个关于Oracle DBA的典故;
曾经有一位Oracle DBA,被Oracle公司请去对其公司内的Oracle研发人员
做关于Oracle系统的培训
哪些地方可以获取这些资料?
WorkLogs
MariaDB: https://mariadb.atlassian.net/secure/Dashboard.jspa
MySQL: https://dev.mysql.com/worklog/
Percona: https://launchpad.net/percona-server
Bug 库
MySQL Bugs Home: http://bugs.mysql.com/
Percona Bugs Home: https://bugs.launchpad.net/percona-server
各发行版本
历史版本: http://downloads.mysql.com/archives/community/
当前版本: http://dev.mysql.com/downloads/mysql/
我的经验
——定期更新自己的前期知识
随着对MySQL系统理解的深入,此时应该定期回过头来看看自己早期
整理的笔记,撰写的文章,相信我,你一定会发现很多错误,嗤之以
鼻的想法。
无须沮丧,这说明你的能力提高了,更正他们。
个人经验
就InnoDB的锁实现一个功能,近三年内,每当有点新的思路,想
法,我就会去重新做测试,看代码,不断纠正自己的想法。
最近的一篇文章: 《 MySQL加锁处理分析》
但在我现在看来,这篇文章中仍旧有不正确的地方…
——注重发散知识的积累
看懂MySQL源码不是最终目标,当你觉得很多你看懂了,你就会有新的追求,此时,
也就意味着需要积累新的知识;
对MySQL的并发处理不满意? Kernel_mutex?
需要学习并发编程的相关知识;
对MySQL单线程复制不满意?延迟严重?
需要学习MySQL现有复制的实现,进行多线程改造;
对MySQL压缩功能不满意?
了解业界成熟的压缩算法,尝试实现并替换;
对InnoDB引擎不满意?
自己做一个引擎,你需要进一步了解其他数据库/NoSQL/NewSQL的优点;
——写在最后的建议
能坚持到/看到这里的,那绝壁是真爱!!
赠送两个小小的建议
建议一: 从handler出发
MySQL插件式引擎,连接MySQL Server与各种存储引擎的,是其Handler
模块 —— hanlder模块是灵魂;
以InnoDB引擎为例,从ha_innodb.cc文件出发,理解其中的每一个接口的
功能,能够上达MySQL Server,下抵InnoDB引擎的内部实现;
建议二: 不放过源码中的每一处注释
MySQL/InnoDB源码中,有很多注释,一些注释相当详细,对理解某一个
函数/某一个功能模块都相当有用;
个人推荐的相关书籍
首先,以下推荐的书籍,我都保证是自己看过的,有的看过不止一遍;
MySQL. 《 MySQL Reference Manual》
Baron Schwartz, Peter Zaitsev, Vadim Tkachenko. 《 High Performance MySQL, 3rd Edition》
Sasha Pachev. 《 Understanding MySQL Internals》
J. M. Hellerstein, M. Stonebraker, J. Hamilton. 《 Architecture of a Database System》
Jonathan Lewis. 《 Oracle Core: Essential Internals for DBAs and Developers》
Jonathan Lewis. 《 Cost-Based Oracle Fundamentals》
Steve Adams. 《 Oracle8i Internal Services for Waits, Latches, Locks, and Memory》
Oracle. 《 Oracle Data Server Internals: Oracle DSI》
姜承尧. 《 MySQL技术内幕: InnoDB存储引擎》
个人推荐的相关博客
以下的这些MySQL相关的博客,都是个人订阅,并且每天关注更新的;
有时间与经历,建议将这些博客中过去的博文,都看一遍;
Planet MySQL http://planet.mysql.com/
Mark Callaghan http://mysqlha.blogspot.com/
Jeremy Cole http://blog.jcole.us/
Percona http://www.mysqlperformanceblog.com/
Oracle InnoDB https://blogs.oracle.com/mysqlinnodb/
Morgan Tocker http://www.tocker.ca/
Dimitri KRAVTCHUK http://dimitrik.free.fr/blog/index.html
Yoshinori Matsunobu http://yoshinorimatsunobu.blogspot.com/
深入MySQL源码 学习方法 何登成专家的更多相关文章
- MySQL源码 数据结构hash
MySQL源码自定义了hash表,因为hash表具有O(1)的查询效率,所以,源码中大量使用了hash结构.下面就来看下hash表的定义: [源代码文件include/hash.h mysys/has ...
- mysql源码安装(5.1)
下载mysql源码包并解压.wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73.tar.gztar -zxvf mysql-5 ...
- Linux(CentOS或RadHat)下MySQL源码安装
安装环境: CentOS6.3 64位 软件: Mysql-5.6 所需包: gcc/g++ :MySQL 5.6开始,需要使用g++进行编译.cmake :MySQL 5.5开始,使用cmake进 ...
- [转]MySQL源码:Range和Ref优化的成本评估
MySQL源码:Range和Ref优化的成本评估 原文链接:http://www.orczhou.com/index.php/2012/12/mysql-source-code-optimizer-r ...
- mysql源码编译安装
首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- MySQL源码解析之执行计划
MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一.MySQL执行计划介绍 在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个 ...
- mysql源码解读之配置文件
要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴.搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可.为了方便 ...
- MySQL源码分析以及目录结构 2
原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...
随机推荐
- 马上着手开发Mac应用程序
你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...
- opencv人脸检测分类器训练小结
这两天在初学目标检测的算法及步骤,其中人脸检测作为最经典的算法,于是进行了重点研究.该算法最重要的是建立人脸检测分类器,因此我用了一天的时间来学习分类器的训练.这方面的资料很多,但是能按照一个资料运行 ...
- 导入CSV文件之后出现换行符问题
在用sqlldr导入数据之后,出现数据无法匹配的情况 在用plsql点击的时候,发现出现换行符的情况,从而使用下面的方法进行匹配 select q.comments from q where repl ...
- Junit3.8 Stack测试
package test; public class MyStack { private String[] elements; private int nextIndex; public MyStac ...
- 《Java数据结构与算法》笔记-CH2无序数组
/** * 本章目标: * 1.自制数组类 * 2.有序数组:按关键字升降序排列:二分法查找 * 3.分析有序数组.大O表示法 */ /** * 自制数组类 书中有的地方有错误,本程序以修改 */ c ...
- 小C的填数游戏
题意: 给出一张n个点的无向图 i连向i-1和i-2 边权为wij 有两个点权ai和bi ai为0或1 在给m个操作 1.将ai异或1 2.将区间x到y的点都填上一个数ci 使得Σ(bi*(ai^ci ...
- linux appear packet loss solution
故障排查: 早上突然收到nagios服务器check_icmp的报警,报警显示一台网站服务器的内网网络有问题.因为那台服务器挂载了内网的NFS,因此内网的网络就采用nagios的check_icmp来 ...
- Java设计模式系列之桥接模式
桥接模式(Bridge)的定义 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地 ...
- HDU 5791 Two (DP)
Two 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5791 Description Alice gets two sequences A and ...
- HDU 5752 Sqrt Bo (数论)
Sqrt Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5752 Description Let's define the function f ...