数据库访问难免在服务器访问中占很大比重,之前所描述的一些优化服务器性能的方法在一般情况下都是尽可能的避免数据库的访问,因此本节来讨论一下针对数据库的优化,重点针对数据库本身的性能。
1 索引的使用(explain可以帮助分析数据库的性能),在mysql中开启慢查询日志可以方便的查看运行中的查询记录。mysqlsla可以帮助分析慢查询日志。
2 索引缓存,一般索引会缓存在内存中,索引通常可能会引起插入更新计算数据的开销增大(除去计算数据外还需要对索引进行更新计算)。
3 锁优化,行锁可以有效优化锁的访问效率,在select与update混合的情况下,行锁可以巧妙的解决读和写互斥的问题。事务性表可以通过优化写入时间来进行性能优化。
4 查询缓存,直接将频繁的查询操作结果缓存起来可以有效提高查询性能。但对于select与update混合的操作来说,查询缓存可能会添乱。
5 线程池,对与数据库来说线程池中的线程尽量采用持久连接可以见效线程重复创建。
6 反范式化设计
7 采用非关系型数据库