位置: 编程技术 - 正文

mysql的分区技术详细介绍(mysql分区分表原理)

编辑:rootadmin

推荐整理分享mysql的分区技术详细介绍(mysql分区分表原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql分区的数据类型,mysql 分区语句,mysql分区的数据类型,mysql分区的数据类型,mysql分区的功能,mysql分区是什么意思,mysql的分区表,mysql 分区语句,内容如对您有帮助,希望把文章链接给更多的朋友!

一、概述

当 MySQL的总记录数超过了万后,会出现性能的大幅度下降吗?答案是肯定的,但是,性能下降>的比率不一而同,要看系统的架构、应用程序、还有>包括索引、服务器硬件等多种因素而定。当有网友问我这个问题的时候,我最常见的回答>就是:分表,可以根据id区间或者时间先后顺序等多种规则来分表。分表很容易,然而由此所带来的应用程序甚至是架构方面的改动工作却不>容小觑,还包括将来的扩展性等。

在以前,一种解决方案就是使用 MERGE类型,这是一个非常方便的做饭。架构和程序基本上不用做改动,不过,它的缺点是显见的:

1.只能在相同结构的 MyISAM 表上使用2.无法享受到 MyISAM 的全部功能,例如无法在 MERGE 类型上执行 FULLTEXT 搜索3.它需要使用更多的文件描述符4.读取索引更慢

这个时候,MySQL 5.1 中新增的分区(Partition)功能的优势也就很明显了:

1.与单个磁盘或文件系统分区相比,可以存储更多的数据2.很容易就能删除不用或者过时的数据3.一些查询可以得到极大的优化4.涉及到 SUM()/COUNT() 等聚合函数时,可以并行进行5.IO吞吐量更大

分区允许可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。

分区应该注意的事项:

1、 做分区时,要么不定义主键,要么把分区字段加入到主键中。2、 分区字段不能为NULL,要不然怎么确定分区范围呢,所以尽量NOT NULL

二、分区的类型

1.RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。2.LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。2.HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包>含MySQL中有效的、产生非负整数值的任何表达式。3.KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含>整数值。

可以通过使用SHOW VARIABLES命令来确定MySQL是否支持分区,例如:

mysql的分区技术详细介绍(mysql分区分表原理)

1、range分区

2.list分区

对于innodb和myisam引擎,一条语句插入多条记录的时候,如果中间有值不能插入,innodb会全部回滚,myisam在错误值之前的数据可以插入到表中。对于innodb和myisam引擎,一条语句插入多条记录的时候,如果中间有值不能插入,innodb会全部回滚,myisam在错误值之前的数据可以插入到表中。

3.hash分区

hash分区的目的是将数据均匀的分布到预先定义的各个分区中,保证各分区的数据量大致一致。  hash的分区函数页需要返回一个整数值。partitions子句中的值是一个非负整数,不加的partitions子句的话,默认为分区数为1。

4.key分区

key分区和hash分区相似,不同在于hash分区是用户自定义函数进行分区,key分区使用mysql数据库提供的函数进行分区,NDB cluster使用MD5函数来分区,对于其他存储引擎mysql使用内部的hash函数,这些函数基于password()一样的算法。

5。columns分区

上面的RANGE、LIST、HASH、KEY四种分区中,分区的条件必须是整形,如果不是整形需要通过函数将其转换为整形。

  mysql-5.5开始支持COLUMNS分区,可视为RANGE和LIST分区的进化,COLUMNS分区可以直接使用非整形数据进行分区。COLUMNS分区支持以下数据类型:  所有整形,如INT SMALLINT TINYINT BIGINT。FLOAT和DECIMAL则不支持。  日期类型,如DATE和DATETIME。其余日期类型不支持。  字符串类型,如CHAR、VARCHAR、BINARY和VARBINARY。BLOB和TEXT类型不支持。  COLUMNS可以使用多个列进行分区。

新增分区删除分区

分区的合并

下面的SQL,将p - p 合并为3个分区pQ1 - pQ3

MySql数据分区操作之新增分区操作 如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误:ERRORHYPartitionmanagementonanotpartitionedtableisnotpossible正确的方法是新

mysql sharding(碎片)介绍 1、Sharding的应用场景一般都那些?当数据库中的数据量越来越大时,不论是读还是写,压力都会变得越来越大。试想,如果一张表中的数据量达到了千

深入研究mysql中的varchar和limit(容易被忽略的知识) 为什么标题要起这个名字呢?commensence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己

标签: mysql分区分表原理

本文链接地址:https://www.jiuchutong.com/biancheng/347288.html 转载请保留说明!

上一篇:MySQL存储引擎中的MyISAM和InnoDB区别详解(mysql8 存储引擎)

下一篇:使用MySQL中的AVG函数求平均值的教程(mysql a.)

  • 个人所得税年终奖单独计税怎么操作
  • 税金及附加要扣除吗
  • 一般纳税人开普票税率是多少
  • 没房分手的多吗
  • 应收账款和应付账款的关系
  • 出口报关单怎么做会计凭证
  • 长期股权投资是金融资产还是非金融资产
  • 债权投资借贷方向是什么一年内的
  • 旅游发票可以抵扣吗
  • 小规模纳税人如何升级为一般纳税人
  • 固定资产折旧费是产品成本的组成
  • 同一控制下的企业合并的会计核算方法
  • 个人合伙清算如何起诉
  • 商业汇票贴现怎么做
  • 一般纳税人税种认定有几个增值税要怎么申报呀
  • 资本公积的核算内容不包括
  • 汽车道路救援费用多少
  • 没有房产证应该找谁
  • 当月冲红发票会导致上月发票作废吗?
  • 出口发票税率怎么开
  • 购买国债逆回购有股东限制
  • 不经常发生应税行为的企业可以选择按小规模纳税人纳税
  • 24个问题
  • 自然灾害造成的存货净损失计入什么科目
  • 公司账上的存货是怎么来的
  • 一般纳税人库存商品怎么做分录
  • 金税三期啥意思
  • 专业服务业政策
  • win7网络无连接
  • 主机倒地后打不开电脑
  • 企业第一年利润是多少
  • 如何在excel中运算
  • linux 传输文件
  • tracert命令的用法
  • igfxext.exe
  • u盘突然被写保护是坏了吗
  • 土地使用税若干问题的补充规定
  • cvpr2017最佳论文
  • 一只正在树上吃的苹果
  • php中session什么意思
  • phpstudy删除
  • 民办非企业单位登记管理暂行条例
  • nginx gui
  • php数据统计源码
  • python处理mysql如何拿到表头
  • 展览费应在在管理费里吗
  • SQLite教程(十四):C语言编程实例代码(2)
  • 根据工资总额组成的规定下列哪些列入工资总额的范围
  • 费用的分摊要注意什么
  • 怎样备份mysql数据库
  • 结转销售成本的凭证需要附件吗
  • 待抵扣进项税额和进项税额的区别
  • 购买的活动板房可以退吗
  • 返还利润含税吗
  • 会计为什么要计提费用
  • 进项做成了销项怎么调账
  • 施工图审查费计入什么会计科目
  • mysql数据库开发技术
  • sqlserver函数大全
  • nhaspx.exe是什么
  • 重装win7系统后桌面没东西
  • 标签windows
  • win8.1使用教程
  • windows网慢
  • 快捷方式栏在哪
  • liunx改时间命令
  • JavaScript中数组长度的属性
  • js设计模式有什么用
  • 初学excel零基础教学视频
  • debug命令及其基本操作
  • ubuntu列出用户
  • nodejs 读取文件
  • Shell脚本统计文件行数
  • [置顶]马粥街残酷史
  • jquery.js插件
  • 销售不动产增值税税率
  • 江苏地税局官网网站
  • 怎么查税务是否备案
  • 收购烟叶支付的价外补贴怎么处理
  • 水库淹没区耕地补偿标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设