mysql目录结构

整理了mysql源代码目录结构。

一 MYSQL系统结构



二MYSQL目录结构

/bdb :The Berkeley DB storage engine handler implementation files

/BUILD :Program compilation files

/client :The mysql command tool (client program) implementation files

/data :The mysql database (system database) schema, data, and index files

/dbug :Debugging utility code

/heap :The MEMORY storage engine handler implementation files

/Docs :The documentation, both internal developer documents and the MySQL online manual

/include :Core system header files and type definitions

/innobase :The InnoDB storage engine handler implementation files

/isam :The old ISAM storage engine handler implementation files

/libmysql :The MySQL C client API (all C source and header files)

/libmysqld :The MySQL server core library (C, C++, and some header files)

/myisam :The MyISAM storage engine handler implementation files

/myisammrg :The MyISAM Merge storage engine handler implementation files

/mysys :The core function library, with basic low-level functions

/regrex :The regular expression function library

/scripts :Shell scripts for common utilities

/sql :The meat of the server's implementation, with core classes and implementations

/sql-bench :MySQL benchmarking shell scripts

/strings :Lower-level string-handling functions

/support-files :Preconfigured MySQL configuration files (such as my-huge. cnf)

/tests :Test programs and scripts

/vio :Network/socket utility functions, virtual I/O, SSL, and so on

/zlib :Compression function source files

/extra :Code of miscellaneous tools

/libmysql_r :Thread-safe version of the client library

/man :Unix manpages

/ndb :MySQL Cluster code,utility scripts,and documentation,Moved to the storage directory in

5.1

/netware :Files used by the Netware port

/OS2 :Files used by the OS/2 port

/pstack :Code for the pstack library that allows the executable to unwind and resolve its own

stack.Useful in a segmentation fault signal handler

/strings :Low-level string and memory manipulation functions,and some data type definitions


/Docs目录下包含以下主题内容:

1. 编码向导
2. 优化器
3. 重要的算法及结构
4. 字符集和相关内容
5. Mysql如何执行不同的select操作
6. Mysql如何处理请求
7. 通信协议
8. 同步
9. MyISAM记录结构
10. .myi文件结构
11. InnoDB记录结构
12. InnoDB页面结构


重要的5个目录

(1)/BUILD下可以编译链接

a) BUILD/compile-pentium-debug –prefix=$HOME/mysql-bin

b) make

c) make install

d) make install

e) $HOME/mysql-bin/bin/mysql-install-db –basedir=$HOME/mysql-bin \

–datadir=$HOME/mysql-bin/var

Ps:如果编译产生问题list.mysql.com搜索“build”

可以使用图形化工具调试Graphical debugger tool(DDD)

http://www.gnu.org/software/ddd/manual/


(2)/myisam目录中以mi开头的文件代表了myisam

mi_open.c 表示open操作

mi_close.c 表示close操作

mi_rkey.c 表示随机key search

mi_rnext.c 表示next key search

mi_key.c 表示managing keys

Ps:inserting rows操作对应mi_write.c,并不是mi_insert.c。

在myisam目录中能找到处理文件,行和key的程序,但不能找到处理列的程序。


(3)/mysys目录 5.0.45中有150个c文件

array.c 动态数组函数定义。

hash.c/.h Hash表函数定义

mf_qsort.c 快速排序算法定义

my_alloc.c 内存分配程序

mf_pack.c 文件和目录处理程序

chartset.c 字符集处理程序


(4)/sql目录中有4种处理程序

“parser”: sql_lex.cc

sql_yacc.cc

“handler”: ha_berkeley.cc

ha_heap.cc

ha_myisam.cc

“statement”: sql_delete.cc

sql_do.cc

sql_help.cc

sql_insert.cc

“statement function”: sql_string.cc

sql_olap.cc

sql_udf.cc

Ps:ha开头的程序是一个处理接口,为不同的storage engine服务,比如ha_myisam.cc就是给myisam调用。

sql开头的程序即为SQL Command。


(5)/vio 即为virtual I/O




Open-source目录

(1)dbug

(2)pstack

(3)regex

(4)strings

(5)zlib


内置和可扩展的存储引擎目录

(1)bdb (可扩展的)

(2)heap

(3)innobase(可扩展的)

(4)myisam

(5)myisammrg

(6)ndb


特定系统平台

(1)OS/2

(2)win

(3)netware



More......

百度生活

在百度快2个星期了,有喜有忧,有疲劳也有轻松,越来越感觉这边的工作氛围是不错,就好像学生时代的自主学习方式。我现在基本上每天早上9点半左右到公司,有时候在公司吃早餐,有时候到鼎好大厦的麦当劳吃,上班不用考勤,进出自由:)。中午午饭比较晚,一般到1点左右,倒是避过了中关村的吃饭高峰期。小组同事一块出发,浩浩荡荡前往中芯大厦,一顿饭大概1个小时左右,发现吃过饭回来后就不怎么想睡觉了。3点左右每天公司都有水果,继续工作到晚上7点左右吃晚饭,晚饭基本上是在第三极,大食代吃,又贵又不好吃,花上1个小时吃晚饭,回来后在公司休息室和同事放松下,有WII玩(不过不会玩),按摩椅不错的说。然后就回去工作,一般到10点左右就回宾馆,洗澡看电视,一般都到12点左右睡觉。这就是我的百度生活。

简单么?的确很简单,不过赚钱拉,感觉就是不一样,现在的干劲是要对得起公司给我的酬劳,不知道我能坚持到多久,努力吧。工作的具体内容还是处于熟悉阶段,辅助做一些脚本完善。不知道自己一个月之内能从百度学到多少,力争多捞一点是一点^_^,加油!

十分怀念一些老朋友,特别是在一个陌生的城市,感觉很强烈阿,哎,何时能适应呢?

More......

向左?向右?

近来发生很多事情,自从北京面试回来以后,一直想写些什么,但始终懒的静坐下来敲点字。此刻实在不想做其他事情了,写点吧。

很庆幸通过了百度的面试,但遗憾的是只能先做实习,对我来说这也许是自己能力的最终评定。整个面试有空的总结下,不像网络上流传的那么难,但整个过程还是有很多学习的地方。

正因为如此,喜忧参半,北京?南京?抉择 抉择 抉择!!!!唉


More......

答辩结束

实际上答辩前几天就结束了,很巧,6.1儿童节! :D

距离上次更新快1个月了,这段时间主要折腾论文了,现在终于Finished了。20年的学校生涯即将画上句号,引用某人的话:“终点也是新的起点!”


期间,经历了百度招聘的3个步骤,这里记录下,希望下次还能再来。首先算百度的网上笔试,比较简单。电话面试很突然,第一次是在晚上10点钟,电面的应该是个技术工程师,主要问的是Perl方面的东西,很糟糕,紧张加突然,后来总结,估计回答了1/4的东西。后来主要围绕我的毕业设计的东西展开,很难估计我回答的好还是不好,不过我感觉这个工程师很厉害,问的问题都很具针对性。第二次电面是人力资源部的gg(自己猜测,可能是第一次不是太好,所以有第二次机会),主要围绕我在读期间的工作内容展开。没有技术问题,这反而让我不怎么适应了,毕竟很难找到一个大亮点来体现自己的能力。大概聊了半个多小时后就结束了,现在继续等待结果。
这两次电面给我的启发就是



  1. 该掌握的技术语言一定要加强,后把“Perl 学习手札”重新温习了。


  2. 语言表达,无论如何,说的东西一定要让人家听的懂,复杂的东西简要说,与其说不清不如不说。


  3. 算法,这个东西无论何时都不能放弃。允许暂时不练习,但不能放弃。一个支持多语言的acm题库SPOJ




More......

Ubuntu->OSX

按照这篇文章进行osx改造。其中一步在改变gnome面板时候,如果要使用Tango图标那么一定要选择perfect-osx作为主题,否则苹果的图标出不来。

More......