## 一、什么是数据的优化
数据库的优化是一个综合型的技术,并不是通过某一种方式让数据库效率提高很多, 而使通过多方便的提高,从而使数据提高很多
主要包括
1. 表的设计合理化
2. SQL语句的优化
3. 给表要添加合适的索引 普通索引、主键所以,唯一索引 unique、全文索引
4. 分表技术(水平分割、垂直分割)
5. 定时清除垃圾数据、定时进行碎片整理
6. 多用存储过程,和触发器
7. 对mysql的配置进行优化[配置最大并发数my.ini,调整缓存大小]
8. 读写分离
9. myql服务器硬件是否要升级
### 表的设计合理化
三范式:
第一范式、
确保每列的原子性、所有的(不可再分)
注意:地址这个字段,如果不分类汇总,不排序,仅仅是起一个字符串的作用,这是我们不拆分(反三范式)
第二范式、
非键字段必须依赖与键字段(一个表做一件事情)
第三范式、
消除传递依赖(如果一个字段可以推到出到另外一个字段)
反三范式:
范式越高,数据的冗余就越少、但是有的时候效率就越底下,为了提高运行效率,可以适当
的适当的让数据的冗余。
数据库的性能比规范化更重要
### SQL语句的优化
#### 定位慢查询
增、删、改、查
### 一、MySql数据库一个关于状态的查询
show status指令 查询mysql的运行状态
show status like ‘com_insert’ 执行了多少次插入
show status like ‘com_update’ 执行了多少次更新
show status like ‘com_delete’ 执行了多少次删除
show status like ‘com_select’ 执行了多少次删除
show[session | global ] status like com_select’
show status like ''uptime' 显示MySql数据库启动多长时间,如果时间很长了,
数据库表的存储引擎是myisan的,这时候就要主要整理碎片。
### 二、显示慢查询
show variables like 'long_query_time'
set long_query_time = 0.5
show status like 'slow_queries'
定位慢查询(开启慢查询的日志)
一旦开启慢查询日志后,日志文件的位置,在my.ini文件去查找datadir
在默认情况下不会开启慢查询,如何开启慢查询呢
第一步: 关闭当前的MySql的服务
第二步: 启动 mysqld --safe -mode --slow-query-log
关闭 mysqladmin -uroot -p123456 shut down
#### 优化问题
通过explain语句可以分析,mysql如何执行的sql语句