ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、什么是数据的优化 数据库的优化是一个综合型的技术,并不是通过某一种方式让数据库效率提高很多, 而使通过多方便的提高,从而使数据提高很多 主要包括 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语句