MySQL5.1开始支持表分区,但是是水平分区,包括hash, list, range 等。
例如分区前:
| id | title | description | author |
+—-+———+————-+——————+
| 1 | title01 | desc01 | ivan |
| 2 | title02 | desc02 | ivan |
| 3 | title03 | desc03 | ivan |
| 4 | title04 | desc04 | ivan |
| 5 | title05 | desc05 | ivan@mysqlab.net |
| 6 | title06 | desc06 | ivan@mysqlab.net |
| 7 | title07 | desc07 | ivan@mysqlab.net |
| 8 | title08 | desc08 | ivan@mysqlab.net |
+—-+———+————-+——————+
分区后:
+—-+———+————-+——–+
| id | title | description | author |
+—-+———+————-+——–+
| 1 | title01 | desc01 | ivan |
| 2 | title02 | desc02 | ivan |
| 3 | title03 | desc03 | ivan |
| 4 | title04 | desc04 | ivan |
+—-+———+————-+——–+
+—-+———+————-+——————+
| id | title | description | author |
+—-+———+————-+——————+
| 5 | title05 | desc05 | ivan@mysqlab.net |
| 6 | title06 | desc06 | ivan@mysqlab.net |
| 7 | title07 | desc07 | ivan@mysqlab.net |
| 8 | title08 | desc08 | ivan@mysqlab.net |
+—-+———+————-+——————+
VP存储引擎(vertical partitioning storage engine)支持垂直分区,将不同的表根据主键作join,而且还支持不同存储引擎的表,甚至原有的表还可以带有水平分区。
详情请参考:https://launchpad.net/vpformysql
谭俊青 MySQL
这几天在中国移动音乐基地(四川成都)这儿培训MySQL Developer课程,当中萌生了个想法,采用提问的方式,然后筛选出合适的命题做介绍。
比如:MySQL是如何使用内存和磁盘的?
呵呵,被骗进来的朋友别生气,今天实在是太晚了,明早还要去上课,明后天补上。
这篇是普及MySQL基本知识的,介绍MySQL是如何使用磁盘和内存的,从手册上可以找到。
磁盘空间的占用:
- 每个数据库对应MySQL数据目录下的一个目录,不管你是采用什么存储引擎。
- 每张数据表都在其对应的数据库目录下有一个table_name.frm文件,存储的是表定义信息,有64KB的限制。
- MyISAM引擎表在其数据库目录下对应3个文件,包括上面的frm文件,还有数据文件和
目录索引文件。
- Innodb有自己的表空间和redo日志文件。
- MySQL还有自己的日志文件,包括error log, binary log, general log等。
- 触发器存储在对应的数据库目录下。
- 认证信息存储在MySQL系统表里,在mysql库下。
- 另外mysqld服务器程序和其他一些客户端管理工具等也需要占用一定的磁盘空间。
内存的占用:
- 线程管理,服务器程序为了提高效率,会将一些信息存储于buffer(cache)。
- Memory(HEAP)引擎将数据存储在
那种中内存中。
- 临时表如果没有超过设定的限制会存储在内存中。
- 每个客户端连接都会使用一定的buffer空间
- 全局的Buffer和Cache(比如MyISAM的keybuffer,InnoDB的buffer pool, Query cache等 )
谭俊青 MySQL

最近一直在学习研究MySQL Cluster,今天正好也看到消息说支付宝在测试IBM DB2 Cluster,16个数据居节点,1个管理节点,采用万兆网卡连接。DB2 Cluster跟MySQL Cluster采用同样的share-nothing构架,网络对它来说至关重要。
但是我这里要说的是,虽然MySQL Cluster发展到今天已经取得很大的成就,性能翻了好几倍,也开始支持磁盘存储(非主键、索引),但是它有致命的弱点:不支持真正的ACID(整个机群down掉的时候,最新GCP之后提交的事务丢失),不支持在线热备(备份的时候需要停止其他请求–single user mode,防止备份数据损坏)…
话说回来,虽然缺点还不止上面提到的这些,在很多情景下不适合使用,但是不可否定它的高明。在高可用和写负载均衡上它的确是性价比很高的解决方案,比如session(Ivan)管理、用户管理等。
这几天要考试,等过阵子陆续写一些有关MySQL Cluster的文章,做下MySQL Cluster的普及和推广。
谭俊青 MySQL, MySQL Cluster, MySQL HA
最近评论