①查询缓存

查看参数:show variables like 'query_cache%';

开启:set global query_cache_type = 1;   

设置缓存大小:set global query_cache_size = 1024*1024*64;  //设置为64m,但通常不够

注:在数据变更时会自动清空缓存;满时会自动替换缓存 ;sql语句必须完全一样。  


②分区   详情点击这里

      是否支持:SHOW VARIABLES LIKE 'have_partitioning'; 


      描述:将表数据分别存储到不同区域(加快增删查改速度)


      组成:分区算法+分区(每个分区都是一张独立的表)


      分区算法:


使用主键,且取余分区)   《----- 最常用-----》

CREATE table partition_1 (
	id int UNSIGNED not null AUTO_INCREMENT,
    title varchar(255),
    PRIMARY KEY (id)
)
engine = INNODB
partition by key (id) partitions 5;

生成结果如下:

Mysql优化方案一之缓存与分区_PHP

使用主键,取余分区)

create table t_hash (
    a int,
    b datetime
)partition by hash (YEAR(b))  partitions 4;  //根据年份分区

list列表分区算法(所有分区算法都必须使用主键,条件分区)

create table t_list (
    a int,
   b datetime
)partition by list (month(b)) (       
	partiotion spring VALUES IN(3, 4, 5),
	partiotion spring VALUES IN(6, 7, 8),
	partiotion spring VALUES IN(9, 10, 11),
	partiotion spring VALUES IN(12, 1, 2)
);

range表达式分区(所有分区算法都必须使用主键,条件分区)

create table t_list (
    a int,
   b datetime
)partition by list (year(b)) (       
	partition p_70 LESS THAN (80),
	partition p_80 LESS THAN (90)
);