MySQL优化之索引管理优化
1、整合DDL语句 在将索引添加到MySQL表的过程中,一个很重要的问题就是DDL语句时阻塞性,把多条alter语句整合成一条SQL语句时一种简单的优化改进。例如:alter table test add index(username);alter table test drop index name,add index name(last_name,first_name);alter table test add...
MySQL优化之系统变量优化
1、全局内存缓冲区1)key_buffer_size 该变量是只存储MyISAM索引信息的全局内存缓冲区。在对应的.MYI文件中的索引数据从磁盘上被读取出来然后存入这个缓冲区。想要调整key_buffer_size的大小,只需要简单统计所有MyISAM表中总索引的大小,然后随着数据随时间增长而调整。当这个索引码缓冲区中没有足够...
正确使用索引
MySQL之所以能够高效的检索数据,可以说全赖索引之功。在索引使用过程中,要注意一下几点。1、MySQL在使用索引时候,采用的是最左匹配原则。如果是单列索引,则很容易理解,若是多列索引,例如idx_a_b_c(a,b,c),则可以发挥索引功能组合为(a),(a,b),(a,b,c),并且索引是一次便利没有回溯的,所以如...
MySQL分库分表
分库分表的种类: 这里说的分库分表是把数据库中的数据物理地拆分到多个实例或者多台服务器上,而不是MySQL原生的Partitioining。 MySQL官方的Partitioning可以将一张表的数据库分别存储为多个文件,如果在写SQL的时候遵从了分区规则,就能把原本需要遍历全表的工作转化为只需要遍历表里一个或者...
Query Cache在不同环境下的使用
Query Cache的功能就是缓存select语句的结果集。查询缓存会存储一个select查询的文本被传送到哭护端的相应结果。如果之后接到一个同样的查询,服务器会从查询缓存中检索结果,文不是再次分析和执行这个同样的查询。 查询缓存绝不反悔过期的数据,当数据被修改之后,查询缓存中的数据都会被清除,如果有些表不...
global_buffers优化
对于global_buffers,可以理解为Oracle的SGA,用于在内存中缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能,主要包括以下几个参数组成。1、innodb_buffer_pool_size 这个参数是InnoDB存储引擎的核心参数,默认为128MB,这个参数注意设置为物力内存的60-70%。2、innodb_addditional_me...
per_thread_buffers优化
对于per_thread_buffers,可以理解为Oracle的PGA,为每个连接到MySQL的用户进程分配的内存,包括以下几个参数:1、read_buffer_size 该参数用于表的顺序描述,表示每个线程分配的缓冲区的大小。比如,在进行全表扫描时,MySQL会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在per_thread_bu...
返回行数比例高不走索引
在MySQL中,查询返回的行数比例超过总行数20%,执行计划将不走索引,下边看一个例子,查询id大于1的信息。点击(此处)折叠或打开mysql> explain select * from test06 where id>1;+----+-------------+--------+------+---------------+------+---------+------+--------...
字符类型数据缺失引号索引被抑制
字符类型的数据没有使用引号,索引将被抑制,下边看一个案例: 查看表结构:点击(此处)折叠或打开mysql> show create table test06 \G*************************** 1. row *************************** Ta...
字段使用函数索引被抑制
在索引字段上使用函数,该字段的索引将会被抑制。如下案例:查看表结构:点击(此处)折叠或打开mysql> show create table test06 \G*************************** 1. row *************************** Table: tes...
limit分页优化
看一个案例点击(此处)折叠或打开mysql> select id from test06 order by id limit 2100000,10; +------+| id |+------+| 7037 || 7037 || 7037 || 7037 || 7037 |...
模式匹配like'%XXX%'优化
在MySQL里,like'XXX%可以用到索引,但like '%XXX%'却不行,比如,以下这个案例: 查看测试表行数:点击(此处)折叠或打开mysql> select count(*) from test03;+----------+| count(*) |+----------+| 117584 ...