数据库优化主要有SQL语句优化、表设计优化、索引维护和改进、硬件设备改进等四个方面。
1、SQL语句优化SQL语句优化主要是找出那些频繁执行的SQL查询语句进行进行优化。常用的优化策略如下:
- 尽可能减少多表查询或建立物化视图
- 用不相关的的子查询代替相关子查询
- 只检索需要的列
- 用IN的条件子句等价替换OR子句
- 经常提交commit,以尽早释放锁。
在数据库表设计阶段,应当符合3NF或BCNF,目的是为了减少数据冗余、消除操作异常。在数据库系统运行过程中,需要根据实际情况对数据表进行改进。需要遵循下面三个原则:
- 频繁的访问是对两个相关的表进行连接操作时,应该考虑进行合并。
- 如果频繁的访问只是在表中的某一部分字段上进行,需要考虑分解表,将该部分单独作为一个表。
- 对于更新很少的表,引入物化视图。物化视图是一种特殊的物理表。
数据库运行期间,数据库系统管理员必须对数据库的索引进行维护和改进。因为用户频繁对数据进行增加、删除、修改等操作使得索引页产生碎片,需要DBA对索引进行维护。可以针对具体的情况,对系统中的索引进行改进以提高性能,即可以适当地调整索引。索引调整要遵循下面四个原则:
- 如果查询操作时瓶颈,则需要在关系上建立合适的索引,通常会在查询条件的属性列建立索引,提高查询效率。
- 如果更新操作是瓶颈,每次更新都会重建表上的索引,引起更新操作效率降低,则可以考虑删除某些不是特别重要的索引。
- 选择适合的索引类型,如果经常使用范围查询,则B树索引比散列索引更高效。
- 将有利于大多数查询和更新的索引设定为聚簇索引。
数据库系统运行过程中,如果经过各种优化调整手段,仍然不能满足性能要求时,可以考虑适当增强硬件设备。比如引入高性能服务器、增加服务器系统内存、高速存储设备等方面。这个需要考虑设备的成本,综合考虑产出和收益比,另外还需要说服决策者同意。