数据库优化方案:mysql
1.表的设计合理化(符合3NF)面试
2.添加适当索引(index)【四种:普通索引、主键索引、惟一索引、全文索引】sql
三、分表技术(水平分割、垂直分割)数据库
四、读写分离编程
五、存储过程【模块化编程】缓存
六、对mysql配置优化【配置最大并发数my.ini,调整缓存大小】服务器
七、mysql服务器硬件升级网络
八、定时的去清除不须要的数据,定时进行碎片整理(MyISAM)mysql优化
mysql优化我通常听从五个原则:架构
- sql优化第一最基本的为了最快的速度查询到数据,减小消耗,尽可能避免全表查询,首先考虑在where和order by字段上创建索引
- where子句条件 后不要使用!=和》《操做符,不然数据库会放弃索引使用全表查询
- 用like模糊查询时不建议在查询字段开头或首尾两端使用百分号,这也会致使字段放弃索引,全表查询,能够考虑百分号在查询字段后面或者使用全文索引
- 在sql中直接使用计算表达式和函数,也会致使索引失败,能够在等号右边计算
- 不要写select * from 须要什么字段返回什么字段减小消耗
- 在sql语句中嵌套SQL查询 ,不要使用iN 或者 not in 可使用 exists替代
- 对于复杂的查询,可使用中间临时表 暂存数据
- 查询数据量大的表 会形成查询缓慢。主要的缘由是扫描行数过多。这个时候能够经过程序,分段分页进行查询,循环遍历,将结果合并处理进行展现。
- 对数据量较大的表,使用分区分表存储
- 必定要按期维护数据表和优化索引,删除空余数据
- 尽可能使用数字型字段
尽可能使用数字型字段,若只含数值信息的字段尽可能不要设计为字符型,这会下降查询和链接的性能,并会增长存储开销。这是由于引擎在处理查询和链接时会 逐个比较字符串中每个字符,而对于数字型而言只须要比较一次就够了。
大家有没有作 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?