关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »MySQL数据库分区管理 细节决定成败

    MySQL数据库分区管理 细节决定成败

    2011-03-02 09:09:00 出处:ITJS
    分享

    在MySQL数据库中,表的不同部分在不同的位置被存储为单独的表。分区主要就是用来解决表在不同的位置存储的问题。在其他数据库中,也会存在这种情况。他们将这种类型的数据表称之为分区表。分区的管理,对于MySQL数据库来说至关重要。其直接跟数据库的性能与安全性息息相关。对于分区的管理,笔者只有两个字:细节。

    细节一:确定所使用的版本是否支持分区

    在MySQL中,并不是所有的数据库版本都支持分区管理。为此数据库管理员首先要做的就是,确认自己所采用的版本是否支持这个功能。如果支持的话,则可以在后续设计与维护时利用分区的特性来提升系统性能、提高数据安全。反之,则不行。要判断所使用的版本是否支持分区功能,可以通过系统命令来实现。如下图所示:

    www.itjs.cn 

    如果上面这个变量,其显示的值是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年的交易数据)。如此在查询时就不用再查找其他剩余的分区。虽然说分区可以在创建了分区表之后再进行修改。即使刚开始没有考虑到这个内容,也可以在以后有需要的时候重新组织数据,对数据表进行分区。但是笔者并不赞成这么做。因为对数据进行重新组织,就好像是重新剪贴、复制了一遍数据。在记录比较多时,这个作业会大量的消耗服务器的资源。为此笔者还是建议,在数据库设计时,管理员就需要对未来的数据量能够进行预测。如果有必要采用分区管理的,那么要提早做。

    当然分区并不是对所有的企业都适用。如果企业的数据量比较少,又或者说大部分是一次性使用的数据,此时采用分区的话,不会给企业带来价值。反而会增加管理上的开销。

    原文链接:http://tech.it168.com/a2011/0301/1161/000001161632.shtml

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    Cornell大神Kleinberg的经典教材《算法设计》是最好入门的算法教材

    从 Microsoft 下载中心安装 Windows 7 SP1 和 Windows Server 2008 R2 SP1 之前要执行的步骤

    Llama 2基于UCloud UK8S的创新应用

    火山引擎DataTester:如何使用A/B测试优化全域营销效果

    腾讯云、移动云继阿里云降价后宣布大幅度降价

    字节跳动数据平台论文被ICDE2023国际顶会收录,将通过火山引擎开放相关成果

    这个话题被围观超10000次,火山引擎VeDI如此解答

    误删库怎么办?火山引擎DataLeap“3招”守护数据安全

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术热点

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。