一直以来都在使用MySQL来做数据库开发,但是MySQL底层是如何实现大数据量的存储对我来说一直是个未知数,并且现在很多公司都会使用MySQL来作为后端数据存储工具,其简单强大的特点深受广大公司青睐。现在在公司开始接触性能优化方面的任务,由于MySQL数据量已经很庞大,单表数据量已达数千万,有些甚至是亿级的数据量,这样给查询带来了很大的挑战,经常有502的问题出现,数据库查询压力不断上升,甚至最近发现偶尔会有数据丢失的现象,这激起了我研究MySQL源码及其底层实现的兴趣,所以打算花一段时间来好好研究。到底MySQL是如何工作的呢,由于自己能力及时间精力有限,研究得不一定对,欢迎大家吐槽。
本次研究的MySQL的源码版本为mysql-5.5.22.tar.gz,因为之前安装过该版本,所以就使用其来研究。
其源码目录结构如下:
[xxx@localhost mysql-5.5.22]$ ls
BUILD configure.cmake INSTALL-WIN-SOURCE mysql-test sql unittest
BUILD-CMAKE COPYING libmysql mysys sql-bench VERSION
client dbug libmysqld packaging sql-common vio
cmake Docs libservices plugin storage win
CMakeLists.txt extra man README strings zlib
cmd-line-utils include mycnf regex support-files
config.h.cmake INSTALL-SOURCE mysql_start.sh scripts tests
源码目录结构说明(版本不一样目录结构可能也不太一样):
-
BUILD