MySQL按月自动创建分区表(千万级大表优化)

MySQL按月自动创建分区表(千万级大表优化),第1张

对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子。

MySQL实现分区的方式也意味着索引也是按照分区的子表定义, 没有全局索引

分区的意思是指将同一表中不同行的记录分配到不同的物理文件中 ,几个分区就有几个.idb文件。MySQL数据库的分区是局部分区索引,一个分区中既存了数据,又放了索引。也就是说,每个区的聚集索引和非聚集索引都放在各自区的(不同的物理文件)。

1、可以让单表 存储更多的数据

2、 分区表的数据更容易维护 ,可以通过删除与那些数据有关的分区,更容易删除数据,也可以增加新的分区来支持新插入的数据。另外,还可以对一个独立分区进行优化、检查、修复等 *** 作。

3、部分查询能够从查询条件确定只落在少数分区上, 查询速度会很快

4、通过跨多个磁盘来分散数据查询,来 获得更大的查询吞吐量

要使定时事件起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1。

1、查看scheduler的当前状态:

2、修改scheduler状态为打开(0:off , 1:on):

3、临时打开定时器(四种方法):

4、永久生效的方法,修改配置文件my.cnf

5、临时开启某个事件

6、临时关闭某个事件

对大数据的数据库管理优化的总结:

常用的优化sql----突出快字,使完成 *** 作的时间最短

1、用索引提高效率:

2、选择有效率的表名顺序,及数据结构及字段;

3、使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表;

4、删除重复记;

5、过内部函数提高SQL效率;

......

读写分离----- *** 作不在一个表里完成

1、主数据库A,进行事务性增、改、删 *** 作(INSERT、UPDATE、DELETE);

2、从数据库B,进行SELECT查询 *** 作;

3、A复制到B,使数据保持一致性;

垂直划分 ------数据不存储在一个服务器里

按照功能划分,把数据分别放到不同的数据库和服务器。如博客功能的放到服务器A,储存文件放到服务器B;

水平划分------相同数据结构的数据不放在一张表里

把一个表的数据根据一定的规则划分到不同的数据库,两个数据库的表结构一样。

数据归档处理-----时间优先原则存储读取

将数据库中不经常使用的数据迁移至近线设备,将长期不使用的数据迁移至文件形式归档。这样,随着应用的需要,数据会在在线、近线和文件文档之间移动,如当应用需要访问很久以前的某些数据,它们的物理位置在近线设备,则会自动移动到在线设备。对用户的应用而言,这些都是透明的,就像所有数据都存放在在线设备一样,不会对数据库应用产生任何影响。

要看数据多到何种程度。

比如一个表的笔数只是几百,如果不需要和其他

大表

关联查询数据,连

索引

都不用建。

如果是几十万级别的表,一般正确建索引就可以。

如果是千万级别的表,不但要正确建索引,而且要定时手工进行收集

统计信息

维护,不建议系统自动维护,以免影响

使用性能

如果是亿以上级别的表,则可考虑按一定条件拆分表

资料

,将旧资料归档,这样可改善生成表的使用。

数据库优化的同时,

程序

也要进行相应优化,程序和

数据科学

搭配,才能使性能达到最佳。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9972139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存