没有合适的资源?快使用搜索试试~ 我知道了~
当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种: 1、分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多。 优点:提高并发量,减小锁的粒度 缺点:代码维护成本高,相关sql都需要改动 2、分区,所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到另外磁盘上 优点:代码维护量小,基本不用改动,提高IO吞吐量 缺点:表的并发程度没有增加 3、拆分业务,这个本质还是分表。 优点:长期支持更好 缺点:代码逻辑重构,工作量很大 当然,每种情况
资源详情
资源评论
资源推荐
MySQL优化之分区表优化之分区表
当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种:
1、分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多。
优点:提高并发量,减小锁的粒度
缺点:代码维护成本高,相关sql都需要改动
2、分区,所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到另外磁盘上
优点:代码维护量小,基本不用改动,提高IO吞吐量
缺点:表的并发程度没有增加
3、拆分业务,这个本质还是分表。
优点:长期支持更好
缺点:代码逻辑重构,工作量很大
当然,每种情况都有合适的应用场景,需要根据具体业务具体选择。由于分表和拆分业务和mysql本身关系不大属于业务
层面,我们只说和数据库关系最紧密的方式:表分区。不过使用表分区有个前提就是你的数据库必须支持。那么,怎么知道我
的数据库是否支持表分区呢 ? 请执行下面命令
代码如下:
show plugins; —在mysql控制台中执行
据说5.4一下的版本是另外一个命令,不过我没有测试
代码如下:
show variables like ‘%part%’;
数据库的表分区一般有两种方式:纵向和横向。纵向就是把表中不同字段分到不同数据文件中。横向是把表中前一部分
数据放到一个文件中,另一部分数据放到一个文件中。mysql只支持后后一种方式,横向拆分。
1、创建分区表、创建分区表
如果要使用表的分区优势,不但要数据库版本支持分区,关键要建分区表,这个表和普通表不一样,并且必须建表的时
候就要指定分区,否则无法把普通表改成分区表。那么,如果创建一个分区表呢? 其他很简单,请看下面建表语句
CREATE TABLE `T_part` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
) ENGINE = myisam DEFAULT CHARSET = utf8
PARTITION BY RANGE (f_id)( -----指定分区方式
PARTITION p0 VALUES less THAN (10),-- 分了两个区
PARTITION p1 VALUES less THAN (20)
)
上面语句建了一个“T_part”表,有两个字段f_id和f_name,并且根据RANGE方式把表分成两个区p0、p1,当f_id小于10放入
p0分区,当f_id大于0小于20放入分区p1. 那么当f_id大于20的数据放入哪个分区呢? 你猜对了,insert语句会报错。
看到了吧,创建分区表就这么简单!当然,你随时可以添加删除分区,不过要注意,删除分区的时候会把当前分区下所有
数据都删除。
代码如下:
alter table T_part add partition(partition p2 values less than (MAXVALUE)); —新增分区
alter table T_part DROP partition p2; —-删除分区
2、表分区的几种方式、表分区的几种方式
mysql支持5种分区方式:RANGE分区、LIST分区、HASH分区、LINEAR HASH分区和KEY分区。每种分区都有自己的
weixin_38644780
- 粉丝: 2
- 资源: 886
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0