常见的数据库查询或写入慢,一般有以下情况
1、数据库经常有删除或有大量查询,(导致磁盘碎裂,数据库缓存堆积)
2、数据量大,导致在查询或写入时,由于负载高,导致系统慢
3、业务代码本身有大量对象,导致查询或写入慢,如有大量慢sql,以及有大量冗杂的对象
4、数据库(数据库中有大量的大宽表,以及数据量大的表)承载的数据量大,导致查询或写入慢
正对以上几种情况,给出以下解决方案:
数据库经常有删除或有大量查询,(导致磁盘碎裂,数据库缓存堆积)
针对以上问题,需给出以下解决方案:
对现有数据库进行优化
数据库经过一段时间使用,数据库空间变得越来越庞大,一些delete的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期运行以下命令进行优化
运行reorg、runstats命令,清楚delete数据,优化数据结构
- Db2 reorg table 表名
- Db2 runstats on table 表明 with distribution and indexes all
因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall,即可在当天任务结束后,运行runsall,对数据库进行优化
数据量大,导致在查询或写入时,由于负载高,导致系统慢。
争对数据量大,这种情况,需将根据数据根据业务拆分,按照存储,数据分层,从而减小数据库压力
- 业务代码本身有大量对象,导致查询或写入慢,如有大量慢sql,以及有大量冗杂的对象。争对该种情况
(1)、优化代码,减少大量对象,如只查询有用的字段,对无用的字段进行注释
(2)、尽量使用业务走索引的方式去做查询 ,减少函数的使用等,具体情况要根据业务进行分析,而后给出争对性解决方案 - 数据库(数据库中有大量的大宽表,以及数据量大的表)承载的数据量大,导致查询或写入慢
争对以上情况,需对大宽表进行贴进业务式改造,如某业务只使用了某几个字段,那可将这几个字段从大宽表中拆分出来,而后进行相应的查询,当然以上只是某中情况,具体情况还需根据业务需求,对表进行设计
如是:星形模式 还是雪花模式去设计里,要根据相应的问题给出相应的解决方案