MySQL数据库分区管理--细节决定成败_数据库教程
作者:小甘发布时间:2020-12-24分类:数据库浏览:830
在MySQL数据库中,表的不同部分在不同的位置被存储为单独的表。分区主要就是用来解决表在不同的位置存储的问题。在其他数据库中,也会存在这种情况。他们将这种类型的数据表称之为分区表。分区的管理,对于MySQL数据库来说至关重要。其直接跟数据库的性能与安全性息息相关。对于分区的管理,笔者只有两个字:细节。
细节一:确定所使用的版本是否支持分区
在MySQL中,并不是所有的数据库版本都支持分区管理。为此数据库管理员首先要做的就是,确认自己所采用的版本是否支持这个功能。如果支持的话,则可以在后续设计与维护时利用分区的特性来提升系统性能、提高数据安全。反之,则不行。要判断所使用的版本是否支持分区功能,可以通过系统命令来实现。如下图所示:
如果上面这个变量,其显示的值是YES,那么很庆幸的告诉你,你说是用的版本支持分区管理。如果这个变量的值是空白的,则表示所使用的版本不支持分区管理。笔者建议对现有的数据库版本进行升级。
对于分区管理,笔者需要强调一点,即MySQL数据库与其他数据库在分区实现上的差异。对于MySQL数据库来说,主要是通过分区函数来实现分区的控制。如这可能是一个HASH函数、或者一个数值列表。虽然数据库管理员并不需要非常了解其内部的实现机制。但是需要明确的是,采用不同的分区类型,就选择了不同的分区函数。反过来说,分区函数的特征就确定了所选择分区的特性。从这个角度来讲,掌握函数的一些基本特征,可以帮助我们更好的理解不同类型分区之间的差异。从而有利于数据库管理员根据企业的实际情况来设计合理的分区。
细节二:存储引擎与分区之间的关系
存储引擎主要用来实现对数据库数据的存储。显然这个存储引擎与分区之间有着紧密的联系。这个联系主要体现在如下这个方面。
通常情况下,对于创建了分区的数据表,数据库管理员可以使用数据库服务器所支持的任何存储引擎。也就是说,对于数据引擎来说,分区是透明的。这主要是因为在MySQL数据库中,分区引擎是在一个单独的层中运行的。并且可以和任何这样的层进行相互沟通。不过如果再深挖下去的话,这里仍然有一个细节问题需要考虑,即需要注意一个限制的规则。对于同一个分区表的所有分区都必须使用同一个存储引擎。举一个简单的例子。现在有一个数据表,其有两个数据分区,分别为A与B。此时如果数据库管理员对于分区A采用了MYISAM;那么对于分区B也只能够使用MYISAM,而不能够使用其它的,如INNODB。
这段话看起来好像有点互相矛盾的地方。其实我们可以将其总结为一句话。即不同的分区表,可以采用任何数据库所支持的数据引擎。但是对于同一个数据表的不同分区,则只能够使用同一个存储引擎。
最后需要说明的是,从存储引擎的相关信息中,并不能够看出其服务的数据表是否支持分区的功能。也就是说,不能够通过命令show engines来判断数据库是否支持分区。数据库管理员只能够通过上面的第一个命令来判断数据库分区的相关信息。
细节三:分区是一个整体,不能够进行分割
一个数据表可以根据实际情况分为多个分区。但是分割后的分区仍然是一个整体。这是什么意思呢?笔者举一个例子,各位就可以理解了。现在有一个数据表,表中有记录和索引。在进行分区设计时,不能够只对数据分区而不对索引分区,也不能够对索引分区而不对数据分区。这就好像是分蛋糕一样。蛋糕会有上下两层。在分蛋糕时,是上下两层一起分。而不会只分上面一层奶油。为此需要切记,分区时是对数据表中的所有内容进行同时分区,而不能够对部分进行分区。
另外需要注意的是,如果要对某个表进行分区,那么就需要对整个表进行分区管理。而不能够对部分进行分区。如对某个表的上半部分不执行分区,而只对下半部分进行分区管理,这是不允许的。
细节四:分区如何提高查询效率
采用分区管理,可以很好的提高查询的效率。笔者这里举一个零售企业的案例。如现在有一家超市,使用的是MySQL数据库。一家超市,每年的销售记录会有几千万条。几年累积下来,数据量非常的大。现在如果用户需要查询,去年一年某个产品的销售情况,那就像大海捞针一样,速度会非常的慢。
此时如果采用分区管理的话,会明显的提高查询的效率。在数据库设计的时候,可以根据时间来划分分区。如为每一年的数据单独设置一个分区。此时再查询2010年某个产品的销售情况时,由于指定了Where条件语句,则系统只会从2010年这个数据分区中去查找相关的内容,而会忽略其他无关的分区,从而改善数据查询效率。
在实际工作中,笔者还经常将某个表分为多个分区,然后将不同的分区放置在不同的磁盘上。此时可以通过多个硬盘来分散数据查询,来获得更大的查询吞吐量。如果企业数据库服务器中,已经使用了磁盘阵列5的话,采取这个措施就是多此一举。如果服务器中只有一块硬盘、或者虽然有多快硬盘但是没有实现磁盘阵列的话,笔者将多个分区存放在多快硬盘上的做法,还是蛮值得推荐的。如还是以零售企业为例。如果企业一年的销售记录有上亿条。此时要对这上亿条的数据进行统计分析,对于硬盘的吞吐量是一个极大的考验。此时我们可以对这个数据表进行分区。如可以根据季度将其分为四个区A、B、C、D。然后将AC两个分区放在硬盘甲上,将剩余的BD两个分区放在硬盘乙上。此时系统在读取整年的数据时,会同时从两块硬盘上读取数据。这么设计的话,硬盘的吞吐量就可以提高一倍(假设不考虑管理开销)。通过这种方式,也可以提高查询的效率。其与磁盘阵列5有异曲同工之妙。只是其实现的级别不同。
可见采用分区之后,一些查询能够得到很大的优化。这主要是因为用户可以借助于满足一个给定的Where语句的数据可以只保存在某个特定的分区内(如2010年的交易数据)。如此在查询时就不用再查找其他剩余的分区。虽然说分区可以在创建了分区表之后再进行修改。即使刚开始没有考虑到这个内容,也可以在以后有需要的时候重新组织数据,对数据表进行分区。但是笔者并不赞成这么做。因为对数据进行重新组织,就好像是重新剪贴、复制了一遍数据。在记录比较多时,这个作业会大量的消耗服务器的资源。为此笔者还是建议,在数据库设计时,管理员就需要对未来的数据量能够进行预测。如果有必要采用分区管理的,那么要提早做。
当然分区并不是对所有的企业都适用。如果企业的数据量比较少,又或者说大部分是一次性使用的数据,此时采用分区的话,不会给企业带来价值。反而会增加管理上的开销。
相关推荐
- MySQL数据库应用场景知识点有哪些?
- 简单介绍一下Mysql中的临时表使用方法_mysql数据库培训
- MYSQL数据库中mysqldump的使用说明_mysql数据库培训
- 在ANSI模式下运行MySQL的方法_mysql数据库培训
- MySQL中LOAD DATA LOCAL安全问题的详细介绍_mysql数据库培训
- MySQL数据库物理备份所需文件_mysql数据库培训
- 详细分析MYSQL数据库中explain的使用方法_mysql数据库培训
- 介绍MySQL Query Optimizer基本工作原理_mysql数据库培训
- 怎样修改MySQL的字符集的方法_mysql数据库培训
- 介绍一下MySQL处理磁盘满的方式_mysql数据库培训
- 数据库排行
-
- 1如何用命令行执行mysql的sql文件_mysql数据库培训
- 2Mysql查询结果按指定的id列排序_mysql数据库教程
- 3MySQL中LOAD DATA LOCAL安全问题的详细介绍_mysql数据库培训
- 4mysql数据库中,为表中的字段设置默认值_mysql数据库培训
- 5Mysql中的alter table操作原理_mysql培训
- 6mysql数据库中int、bigint、smallint 和 tinyint的区别详细介绍_mysql数据库
- 7怎样修改MySQL的字符集的方法_mysql数据库培训
- 8Mysql带返回值与不带返回值的2种存储过程写法_mysql软件编程培训
- 9VPS下修改MySQL root用户密码的方法_MySQL数据库培训
- 标签列表
-
- Java (3694)
- 北大青鸟 (3713)
- 软件开发 (3613)
- JAVA (3413)
- UI设计入门 (2093)
- 惠州北大青鸟 (4375)
- 惠州IT培训 (2558)
- UI设计培训 (2090)
- 惠州UI设计培训 (2095)
- 惠州UI设计培训学校 (2090)
- 惠州计算机软件培训 (6260)
- 惠州计算件软件开发 (6260)
- 惠州计算机软件基础 (6261)
- 惠州计算机JAVA培训 (3574)
- 惠州计算机Java软件开发 (3620)
- 惠州计算机JAVA软件开发 (4645)
- 惠州计算机JAVA软件开发学校 (3338)
- 惠州计算机Java软件开发培训 (3338)
- 北大青鸟IT计算机学校 (5048)
- 北大青鸟IT软件学校 (5062)
- 北大青鸟IT学校 (5059)
- 惠州计算机UI设计软件开发 (2088)
- UI设计基础教程 (2088)
- UI设计是什么 (2088)
- UI设计教程 (2088)
- 网站分类
-
- 计算机教程
- 计算机入门
- 职业学校
- 新闻动态
- 专业课程
- 热门技术
- SEO
- 培训教程
- windows
- linux教程
- 系统集成
- 网站开发
- Html5
- 办公软件
- 师资力量
- 热点问答
- 联系我们
- 计算机学校
- 惠州计算机学校
- 河源计算机学校
- 广州计算机学校
- 深圳计算机学校
- 湛江计算机学校
- 佛山计算机学校
- IT计算机培训信息
- 设计专业
- UI
- 影视特效
- 游戏动漫设计
- Photoshop
- AI设计
- 软件教程
- Java技术
- C语言/C++语言培训
- C#
- Python技术
- PHP
- 数据库
- SQL Server
- 网络教程
- 网络安全
- 网络营销
- 软件专业
- 大数据专业
- 前端开发专业
- 软件测试专业
- Python专业
- 软件实施
- 珠海计算机学校
- 初中生学什么好
- 计算机认证
- 文章归档
-
- 2024年5月 (36)
- 2024年4月 (80)
- 2024年3月 (65)
- 2024年2月 (54)
- 2024年1月 (25)
- 2023年12月 (12)
- 2023年11月 (73)
- 2023年10月 (134)
- 2023年9月 (34)
- 2023年8月 (3)
- 2023年7月 (3)
- 2023年6月 (12)
- 2023年5月 (30)
- 2023年4月 (72)
- 2023年3月 (11)
- 2023年2月 (34)
- 2023年1月 (37)
- 2022年12月 (78)
- 2022年11月 (359)
- 2022年6月 (1193)
- 2022年5月 (570)
- 2022年4月 (1567)
- 2022年3月 (982)
- 2022年2月 (54)
- 2022年1月 (182)
- 2021年9月 (308)
- 2021年8月 (1704)
- 2021年7月 (2423)
- 2021年6月 (1806)
- 2021年5月 (1569)
- 2021年4月 (1380)
- 2021年3月 (1255)
- 2021年2月 (709)
- 2021年1月 (1521)
- 2020年12月 (3626)
- 2020年11月 (1646)
- 2020年10月 (1046)
- 2020年9月 (592)
- 最近发表
-
- 汕尾信息:世界技能大赛获奖选手全省巡回宣讲交流活动走进汕尾|||电脑计算机编程培训学校
- 河源信息:世界技能大赛获奖选手到河源开展全省巡回宣讲交流活动|||广州市北大青鸟计算机职业培训学校
- 佛山信息:6000+“笋岗”!粤西专场招聘会!佛山名企→|||广州市北大青鸟计算机职业培训学校
- 江门信息:@创业培训讲师,快来参加广东省第二届马兰花创业培训讲师赛江门选拔赛|||电脑计算机编程培训学校
- 东莞信息:普法宣传进工地治欠保支暖民心|||中专学计算机平面设计女生可以学计算机网络技术好吗
- 佛山信息:奖金高达20万!“中国创翼”创业创新大赛报名|||计算机职业技能培训班
- 阳江信息:阳江市2024年“人社局长千企行”活动启动|||计算机网络培训学校
- 江门信息:江门选手斩获全国乡村振兴职业技能大赛铜牌,实现国赛奖牌“二度破冰”|||北大青鸟计算机培训中心
- 汕头信息:汕头高层次人才“金凤卡+社保卡”一站办理!赋能人才工作高质量发展|||北大青鸟计算机培训中心
- 东莞信息:沙田镇召开社保志愿推广会|||计算机培训学校招生