千万级别数据量mysql优化策略

Posted JustTheWayIam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了千万级别数据量mysql优化策略相关的知识,希望对你有一定的参考价值。

表结构优化

1.  使用独立表空间

独立表空间指的是innodb表的一种数据结构 

独占表空间:  每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。

2.  分区表

分区表是一种粗粒度,简易的索引策略,适用于大数据的过滤场景.最适合的场景是,没有合适的索引时,对其中几个分区表进行全表扫描.或者只有一个分区表和索引是热点,而且这个分区和索引能够全部存储在内存中.限制单表分区数不要超过150个,并且注意某些导致无法做分区过滤的细节,分区表对于单条记录的查询没有优势,需要注意这类查询的性能.

 

根据表结构的特点可以将单表根据一些特定的条件来进行分区,例如一张表的数据是按照时间的先后顺序进行插入的,那便可以根据时间戳这个字段来进行分区。

3.  内存数据库

可以考虑将数据存入内存数据库来加快数据查询的速度。

 

Sql优化

1.  多条件查询下的强制(忽略)索引策略

强制索引 FORCE INDEX

SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …

以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。

忽略索引 IGNORE INDEX

SELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) …

在上面的SQL语句中,TABLE1表中FIELD1和FIELD2上的索引不被使用。

 

配合分区表的话一般来说强制使用的索引是分区表的分区条件字段。

2.  尽量减少表的关联使用单表进行查询

大数据量的情况下如果使用表关联的话,产生的笛卡儿积的数量太大数据库进行条件过滤进行的计算耗费时间。

以上是关于千万级别数据量mysql优化策略的主要内容,如果未能解决你的问题,请参考以下文章

千万级别的数据库优化

MySQL 对于千万级的大表要怎么优化

MySQL 对于千万级的大表要怎么优化?

MySQL 千万 级数据量根据(索引)优化 查询 速度

MySQL 千万 级数据量根据(索引)优化 查询 速度

BATJ解决千万级别数据之MySQL 的 SQL 优化大总结