首页 > 开发 > PHP > 正文

基于MySQL分区性能的详细介绍

2024-05-04 22:27:09
字体:
来源:转载
供稿:网友

一,      分区概念 

分区允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表。MySQL从5.1.3开始支持Partition。

分区和手动分表对比

手动分表 分区
多张数据表一张数据表
重复数据的风险没有数据重复的风险
写入多张表写入一张表
没有统一的约束限制强制的约束限制

 

MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用:

  • Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。
  • Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
  • Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
  • List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。
  • Composite(复合模式) –以上模式的组合使用 

     

    二,分区能做什么

    • 逻辑数据分割
    • 提高单一的写和读应用速度
    • 提高分区范围读查询的速度
    • 分割数据能够有多个不同的物理文件路径
    • 高效的保存历史数据
    • 一个表上的约束检查
    • 不同的主从服务器分区策略,例如master按Hash分区,slave按range分区

       

      三,分区的限制(截止5.1.44版)

      •   只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列

      •   最大分区数目不能超过1024

      •   如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内

      •   不支持外键

      •   不支持全文索引(fulltext)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表