oracle版本:19c
前言
一般基于springboot+mybatis的数据库表大数据量查询,出现查询卡死情况是由于通过数据库连接插件传输的数据量过大,导致网络传输和内存急剧增大导致。
处理方案
1. 优化查询sql,根据业务场景添加查询条件。
2. 如果当前查询的数据量不大,考虑添加普通索引或者组合索引。
3.如果本身就是用分页查询,一次查10条数据,那查询性能慢就有可能是在查询count值时卡顿。
4. 以上3种情况都无法优化情况,就需要根据业务场景对表进行分区或者分表,个人工作中采用的分区,采用数据日期字段作为分区方式,以下为分区步骤:
a. 备份原始表
b. 原始表重命名
c.基于原始表创建季度分区表
create table a(id varchar2(30)not null,create_date date,......)table space MM
partition by range(create_date) interval (numtoyminterval(3,'month'))
(partition a_202402 values less than (to_date('2023-01-01,'yyyy-mm-dd))) enable row movement;
d.后续insert就会按照分区表插入不通文件中,但是注意,查询条件是必须要有分区时间字段。
e.分区字段需要加分区索引