OLTP性能调优

可以从以下几个方面提高OLTP性能。

  • 日志回刷时机配置
  • 脏读隔离级别
  • 线程池

日志回刷时机配置

事务提交时立即回刷事务的日志对数据库的性能有一定的影响。事务结束时跳过日志回刷过程,未回刷的日志由回刷线程自动回刷或做检查点时强制回刷,可以提高数据库性能,但如果在日志未回刷到硬盘之前数据库非正常关闭,可能会导致数据丢失或损坏。

参数ENABLE_FLUSHLOG_AT_COMMIT可用于设置事务提交后是否立即回刷日志;设置ENABLE_FLUSHLOG_AT_COMMIT为FALSE时,事务提交后不立即回刷日志。在数据重要性不高的场景下,可设置事务提交时不立即回刷日志,以提高数据库性能。

脏读隔离级别

脏读隔离级别下,事务间读写操作不冲突,可大幅提高数据库的读写性能。

可通过设置数据库参数DEFAULT_TRANSACTION_ISOLATION为'read uncommitted'来指定脏读隔离级别。

线程池

在非线程池模式下,神通数据库为每个客户端连接创建一个单独的线程,当线程数超过一定数量以后,会导致操作系统频繁进行上下文切换,从而降低系统的整体性能。

在线程池模式下,客户端连接和服务器端线程不再是一对一的关系,一个线程可以为多个客户端连接提供服务,在高并发的情况下,降低了服务器端线程数量,节省了线程上下文切换的时间,从而提升系统的整体性能。

线程池主要为高并发的OLTP类型应用场景提供优化。