一、优化方向:
- sql异界索引的优化
- 数据库设计合理化
- 系统配置优化:my.cnf
- 硬件优化
二、优化方案:
- 代码优化:for循环次数过多、作了许多无谓的条件查询,相同逻辑重复多次 A.尽量少用或者不用sqlserver自带的函数
B.连续数值条件,用BETWEEN不用IN C.Update 语句,如果只更改1、2个字段,不要Update全部字段 D.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型 E.不建议使用 select * from t ,用具体的字段列表代替“*” F.表与表之间通过一个冗余字段来关联,要比直接使用JOIN有更好的性能 G.select count(*) from table;这样不带任何条件的count会引起全表扫描 - 合理使用索引:选择合适的索引列,选择在where,group by,order by,on从句中出现的列作为索引项,对于离散度不大的列没有必要创建索引。
- 分表:分表方式:水平分割(按行)、垂直分割(按列)
- 数据库读写分离:
当一台服务器不能满足需求时,采用读写分离【写: update/delete/add】的方式进行集群。
一台数据库支持最大连接数是有限的,如果用户的并发访问很多,一台服务器无法满足需求,可以集群处理。mysql集群处理技术最常用的就是读写分离。主从同步:数据库最终会把数据持久化到磁盘,集群必须确保每个数据库服务器的数据是一致的。从库读主库写,从库从主库上同步数据。
读写分离:使用负载均衡实现,写操作都往主库上写,读操作往从服务器上读。 -
缓存:缓存服务:Redis
-
异步/多线程
针对某些客户端的请求,在服务端可能需要针对这些请求做一些附属的事情,这些事情其实用户并不关心或者用户不需要立即拿到这些事情的处理结果,这种情况就比较适合用异步的方式处理这些事情。
-
搜索引擎
例如:solr,elasticsearch