天天看点

如何提高数据库数据更新速率一、场景介绍二、相关方法三、性能参数

一、场景介绍

最近需要测试 Oracle 日志保护程序的性能,需要在该程序运行过程中向数据库insert或update大量的数据,已生成足够多、增速足够快的日志数据。过程中还用 Java 编写了数据插入程序,以执行对数据库的数据更新操作。

下面是提高数据更新速率的方法。

二、相关方法

1、多线程、多会话

数据插入程序可以开启多线程、多会话进行数据更新操作。

2、多表

因为我的需求是生成足够多的日志,随意不局限于一个表,可以将多线程与表绑定,每个线程只负责一个表的数据更新。多个线程操作一个表的话,数据更新性能会受限的。

3、大字段

表中字段可以为大字段,例如 varchar2(4000),这样数据库insert或update的每一行都会占很大的空间,生成的日志也会占很大的空间。

4、多次操作后 commit

避免频繁的执行提交操作,insert、update执行多次后再 commit。

5、建立索引

建立索引可以避免 update 速率过慢的问题。

三、性能参数

两台测试主机配置:虚拟机、16核、16GB内存

这两台测试主机位于同一局域网内,一台部署了Oracle服务器(单实例),另一台部署了数据库插入程序。

Oracle数据库中新建了 8 个表;

数据插入程序开启了 16 个线程,每两个线程向一个表执行insert与update操作。

create table t0~7(id number,name varchar2(3072),age number,descs varchar2(3072));
           

在 insert 和 update 各执行了 160W 次后,测得如下性能。可以满足测试需求。

日志数据生成量(MB) 31200 MB
操作执行总耗时(ms) 2634122 ms
日志生成速率(MB/S) 11.85 MB/S
日志生成量(TB/Day) 0.976TB