MySQL数据库表的合并及分区

今天我们来聊聊处理大数据时Mysql的存储优化。当数据达到一定量时,一般的存储方式就无法解决高并发问题了。最直接的MySQL优化就是分区分表,以下是我个人对分区分表的笔记:

1,合并表:把多个结果相同的的表合并为一个容器。

容器的类型:Myisam,存储引擎:merge
存在的问题:有重复的行

create table packtable(
  id ....
)engine=merge unique=(table1,table2);

2,表的分区:

更多技术知识请关注我的V-X-公-众hao:编程经验共享

2.1,水平分区:根据某个字段进行分区(RANGE分区)

create table test1(
id int(10) primary key auto_increment,
 score int(3)
)engine=innodb default charset=utf8 partition by range(score)(
//根据score字段分区,score小于60的在p1分区
  partition p1 values less than(60),
//根据score字段分区,score小于70的在p2 分区
 partition p2 values less than(70),
 //根据score字段分区,score大于70的在p3 分区
  partition p3 values lessthan maxvalue
 );

2.2 list分区:第一选择基于某 列的值是否属于某个 集合

create table test1(
     id int(10) primary key auto_increment,
     branch_id int(3)
)engine=innodb default charset=utf8 partition by list(branch_id  )(
    //根据branch_id 字段分区,branch_id  在1,2,3之中的为p1分区
     partition p1 values less in(1,2,3),
    //根据branch_id 字段分区,branch_id  在7,8,9 之中的为p2分区
     partition p2 values less in(7,8,9)
);

2.3 hash分区:支持数值类型

--
-- 根据birthda字段获取月份,再根据月份进行分区储存,一共分12个区;
--
create table test1(
 id int(10) primary key auto_increment,
 birthday date
)engine=innodb default charset=utf8 partition by hash(month(birthday))  partitions 12;

2.4 线性分区(linear hash):大数据是增加,合并,拆分速度更快

--
-- 根据branch_id字段进行分区储存,一共分5个区;
--
create table test1(
 id int(10) primary key auto_increment,
 branch_id int(3)
)engine=innodb default charset=utf8 partition by linear hash (branch_id  ) partitions 5;

2.5 key分区:可以计算一列或者多列进行分区

--
-- 根据branch_id字段进行分区储存,一共分5个区;
--
create table test1(
 id int(10) primary key auto_increment,
 branch_id int(3)
)engine=innodb default charset=utf8 partition by key (branch_id  ) partitions 5;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库可以通过以下几个步骤转换为轻量数据库: 1. 数据库架构优化:对MySQL数据库结构进行优化。可以通过减少不必要的字段、合并相关的等方式来简化结构,减少存储空间的占用。 2. 索引的优化:合理地设计和创建索引可以提高查询效率。对于轻量数据库,可以去除一些不必要的索引,并根据实际需求进行索引的重新设计,减少索引的数量和长度。 3. 数据清理和归档:对于历史数据,可以进行清理和归档操作,将不再经常访问的数据移动到归档或者备份中。这样可以有效地减少数据库的体积,提高查询速度。 4. 分区操作:对于大型数据库,可以使用分区操作将数据库划分为多个较小的分区。这样可以提高查询效率,同时也方便数据管理和维护。 5. 压缩数据:可以使用数据压缩工具对数据库文件进行压缩,从而减少磁盘空间的占用。压缩后的数据库文件在读取时可以通过解压缩进行访问,不会对数据库的正常操作产生影响。 6. 选择合适的存储引擎:MySQL支持多种存储引擎,其中InnoDB和MyISAM是常用的两种。InnoDB对事务处理和并发性能支持更好,适合大型应用;而MyISAM适合对查询性能要求较高的应用。根据实际需求选择合适的存储引擎,可以提高数据库的运行效率。 通过上述优化措施,可以将MySQL数据库转换为一个更加轻量级的数据库,提高数据库的性能和效率,降低其资源占用及运维成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值