MySQL优化系列随笔-1
一、MySQL逻辑分层
可以分为:连接层 服务层 引擎层 存储层
每层的作用:
二、MySQL引擎
-
查看mysql引擎
show engines;
-
查看当前使用的引擎
show variables like '%storage_engine%' ;
-
INNODB&MYISAM
mysql的引擎有很多个,但是常用就这两个,那他们有什么区别呢?
InnoDB(默认) :事务优先 (适合高并发操作;行锁)
MyISAM :性能优先 (表锁)
-
建表时,指定mysql引擎
create table if not exists tb( id int(10) auto_increment, name varchar(10) not null, primary key (id) )ENGINE=MYISAM AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8; -- AUTO_INCREMENT=2 为指定他的步长
三、为什么要进行mysql优化
1. 性能低
2. 执行时间太长
3. 等待时间太长
4. SQL语句欠佳(连接查询)
5. 索引失效
6. 服务器参数设置不合理(缓冲、线程数)
四、索引简介
1. mysql的优化,主要是指优化索引
2. 索引: 相当于书的目录
3. 索引: index是帮助MYSQL高效获取数据的数据结构。索引是**数据结构**(树:B树(默认)、Hash树...)
五、索引的优势
- 提高查询效率(降低IO使用率)
- 降低CPU使用率 (...order by age desc,因为 B树索引 本身就是一个 好排序的结构,因此在排序时 可以直接使用)
六、索引的弊端
-
索引本身很大, 可以存放在内存/硬盘(通常为 硬盘)
-
索引不是所有情况均适用:
a.少量数据
b.频繁更新的字段
c.很少使用的字段
-
索引会降低增删改的效率(增删改 查)
七、对比
从上图中很明显的可以看出,当数据量很大时,合理的索引可以提高mysql效率。