通过分区(Partition)提升MySQL性能
什么是数据库分区?
- 水平分区(Horizontal Partitioning) 这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份) - 垂直分区(Vertical Partitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。
举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。
在MySQL 5.1中进行分区
Hash(哈希) – 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区,。例如DBA可以建立一个对表主键进行分区的表。
Key(键值) – 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。
Composite(复合模式) - 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。
站在性能设计的观点上,俺们对以上的内容也是相当感兴趣滴。通过使用分区和对不同的SQL操作的匹配设计,数据库的性能一定能获得巨大提升。下面咱们一起用用这个MySQL 5.1的新功能看看。
下面所有的测试都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM机器上(炫耀啊……),Fedora Core 4和MySQL 5.1.6 alpha上运行通过。
如何进行实际分区
表都准备好了。咱开始对这两表中的数据进行简单的范围查询吧。先分区了的,后没分区的,跟着有执行过程解析(MySQL Explain命令解析器),可以看到MySQL做了什么:
对Vertical Partitioning的一些看法
补充说明
- 支持所有存储引擎(MyISAM, Archive, InnoDB, 等等)
- 对分区的表支持索引,包括本地索引local indexes,对其进行的是一对一的视图镜像,假设一个表有十个分区,那么其本地索引也包含十个分区。
- 关于分区的元数据Metadata的表可以在INFORMATION_SCHEMA数据库中找到,表名为PARTITIONS。
- All SHOW 命令支持返回分区表以及元数据的索引。
- 对其操作的命令和实现的维护功能有(比对全表的操作还多):
- ADD PARTITION
- DROP PARTITION
- COALESCE PARTITION
- REORGANIZE PARTITION
- ANALYZE PARTITION
- CHECK PARTITION
- OPTIMIZE PARTITION
- REBUILD PARTITION
- REPAIR PARTITION
转载于:https://www.cnblogs.com/webu/archive/2013/06/13/3134183.html
通过分区(Partition)提升MySQL性能相关推荐
- from mysql partition select_通过分区(Partition)提升MySQL性能[原创翻译]
通过分区(Partition)提升MySQL性能 --MySQL5.1新特性翻译系列 几年前,俺写过一篇题为"The Foundation of Excellent Performance& ...
- mysql分区为什么提高性能_通过分区(Partition)提升MySQL性能
通过分区(Partition)提升MySQL性能 --MySQL5.1新特性翻译系列 几年前,俺写过一篇题为"The Foundation of Excellent Performance& ...
- 提高mysql性能_提升MySQL性能值得借鉴的几个简易方法
提升MySQL性能的几个简易方法,主要用于设计.开发阶段的借鉴.[@more@]1.Carefully choose attribute types and lengths. 仔细选择字段的类型与长度 ...
- mysql partition 性能_通过分区(Partition)提升MySQL性能
几年前,俺写过一篇题为"The Foundation of Excellent Performance"的文章(现在仍然可以在http://www.tdan.com/i016fe0 ...
- OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能
有个误区:Oracle的表分区会增加查询性能,因为只需要在部分数据里查了:会增加降低插入性能,因为多了一步指定分区的操作.实际情况并非如此,至少在OLTP系统中,分区不一定会增加查询性能,但很可能会增 ...
- 10个提升MySQL性能的小技巧
从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...
- fsync mysql_使用O_DIRECT_NO_FSYNC来提升MySQL性能
这篇文章很短,但很有价值~ MySQL下InnoDB存储引擎有个innodb_flush_method只读参数,用户设置InnoDB的数据和redo日志文件flush行为.defines the me ...
- mysql性能升级方案_使用FriendFeed来提升MySQL性能的方法
背景 我们使用MySQL存储了FriendFeed的所有数据.数据库随着用户基数的增长而增长了很多.现在已经存储了超过2.5亿条记录与一堆涵盖了从评论和"喜欢"到好友列表的其他数据 ...
- mysql 多表联合查询怎么一行显示_使用 explain 优化你的 mysql 性能
本文是关于在学习<高性能 Mysql>附录 D 中关于 Explain 如何获取执行计划信息相关总结.MySQL 提供了一个 EXPLAIN 命令,它可以对 SELECT 语句进行分析,获 ...
最新文章
- dedecms 财付通接口
- 【组队学习】【29期】4. 吃瓜教程——西瓜书+南瓜书
- 聊天机器人之需求分析和流程介绍
- cmder 此时不应有 \Microsoft
- 看门狗(独立看门狗)与窗口看门狗的区别!
- halcon知识:对空图像的系列操作
- php动态写入vue,Vue自定义动态组件使用详解
- C# 视频监控系列(14):总结贴——VC++代码转成C#小结
- IdentityServer4-客户端的授权模式原理分析(三)
- jackson用法,json转换
- 实验3-8 输出三角形面积和周长 (15 分)
- JavaScript return的作用
- mysql 循环语句语法_MySQL循环语句之while循环测试
- 如何在html中加入音效,JavaScript / HTML5中的音效
- python清理微信好友_Python清理微信僵尸粉,基于itchat模块
- Matlab 最小二乘法
- JAVA自学之路 来自尚学堂马士兵老师
- 程序员必备:那些实用的Chrome扩展程序
- rviz进行kitti数据集可视化时加载小车模型报错
- 苹果CMS10 影视模板程序源码
热门文章
- 删除重复行 oracle,Oracle删除重复行传智播客
- sql server整表查询慢_这里有一个慢 SQL 查询等你来优化
- vs2017修改服务器地址大全,vs2017更改默认pip安装服务器地址
- php文字红色代码,IOS_IOS中一段文字设置多种字体颜色代码,给定range和需要设置的颜色, - phpStudy...
- wordpress如何让百度快速收录_安顺如何发布信息百度收录在首页
- php过滤style,PHP过滤各种html标签
- Java Annotaion认识
- 基于人脸识别的课堂签到管理系统(一)---环境设置以及简单的QT界面设计
- LTE学习:CCE(2)
- 生物信息学 陈铭_后基因组时代生物信息学_陈铭.pdf