首页 > 数据库 >KingbaseES 数据库IO优化方向总结

KingbaseES 数据库IO优化方向总结

时间:2024-04-03 17:12:20浏览次数:24  
标签:wal 数据库 IO 磁盘 日志 KingbaseES 性能 buffers

前言

数据库中的IO性能是优化中的重中之重,根据木桶原理,解决了IO这个最容易引起业务堵塞的问题,就能解决绝大部分性能问题。

下面从几个方面总结一下I/O优化问题。

第一,使用相对速度快的高性能存储设备。一般会考虑使用固态硬盘 (SSD) 或 RAID 阵列以获得更快的读写速度。
高性能低延迟的集中式SAN存储是传统大型数据库的主要存储介质,不过,本地化部署数据库中,使用本地存储可以降低成本,本地化部署时,使用本地SATA,SSD盘是不错的选择。

第二,优化 shared_buffers。确保 Kingbase 有足够的共享内存存放数据页。
调整此参数以匹配系统上可用的内存量以获得数据库最佳性能。不同业务类型的数据库,shared_buffers参数的设置会有所不同。
Kingbase数据库建议配置25%的物理内存给shared_buffers使用,这是一种当你不了解业务场景与数据分布时的普遍配置方案。举个例子,如果你的物理内存是256GB,而你的常用数据是100GB,那么设置一个大于100GB的shared_buffers可能是比较好的选择。
设置shared_buffers的首要原则是,不让操作系统产生较多的换页。

第三,优化wal_buffers。WAL日志是 Kingbase 中的一项安全相关功能,可确保事务的持久性和一致性。
配置 wal_buffers 参数以匹配您的工作负载并确保最佳 WAL 性能。调整 wal_buffers 的值时,重要的是要考虑生成 WAL 数据的速率,增加 wal_buffers 的值有助于降低磁盘写入频率并提高性能,不过在普通的负载下,调整wal_buffers并不能显著看到数据库性能的提升,只有当写入wal_buffers的速度大于Walwriter写盘的速度的时候,加大wal_buffers才会有特别明显的性能提升,这个场景会有很频繁的dml事务。作为一般规则,建议wal_buffers 的值设置为磁盘数据库块大小的倍数。

walwriter进程负责将wal日志从内存写入到磁盘,在写日志时的特点:
1)OLTP类型的高频事务数据库,会短时间产生大量wal日志,而写日志会非常频繁,也就是写的次数很多,IOPS很多,每秒的I/O次数很高,这要求磁盘IOPS必须很高。
2)每次写的日志量比较小。每次写的I/O量很小。
3)顺序写,walwriter进程顺序从wal_buffers往wal日志磁盘文件里写日志。
所以尽量将wal日志放在固态硬盘上以提高OLTP类型数据库的性能。对于操作系统,wal日志可以放到raid10或raid01这种条带化处理的磁盘上。

第四,热数据分区。热数据分区是一种将数据和索引分布在多个磁盘上的方法,它可以通过减少磁盘IO争用来提高数据库性能。
考虑使表和索引放在不同磁盘从而得到性能提升。将WAL存储与单独的存放数据的高性能存储分开存放也是一种有效的做法,对于高并发环境的数据库IO性能提升十分有效。
还可以利用tablespace逻辑空间将热表分散到不同的存储上,也是十分有效的热数据分区的方法。注意的是,要使用IO分区,首先要确保存放数据库的磁盘或者磁盘组本身在物理上是分区的,具有一定的隔离性,如果在一个磁盘组上分出多个逻辑卷,然后做IO分区,那么用处微乎其微。

第五,预热缓存。sys_prewarm 扩展可用于预热具有频繁访问的数据,减少在查询时所需数据页的磁盘 I/O 次数。
数据库中某条SQL执行计划不变的情况下,执行速度差异很大,如果SQL访问的大多数数据都在shared buffers中或者在OS的CACHE中,那么执行效率是较高的,也就是在执行计划中,有HIT关键字,表示在shared_buffers中命中的意思。因此在Kingbase数据库中对热数据做预热是有效提升数据库性能的方法。
安装完插件后,我们可以使用select sys_prewarm(‘tablename’)来预热某张表的数据。注意对于大型表谨慎操作,因为预热后的数据大量占用shared_buffers中内存。
sys_prewarm相关文档参考 https://www.cnblogs.com/kingbase/p/15125695.html

第六,优化检查点。检查点的功能是将共享缓冲区缓存中的脏页刷新到磁盘。降低检查点的频率和大小有助于减少磁盘 I/O 并提高性能。优化检查点性能的一些技术包括增加 checkpoint_timeout 和 checkpoint_completion_target 配置参数,以及使用更快的存储硬件来存储数据和 WAL 文件。
还可以调大max_wal_size以延缓检查点发生时间。在I/O的角度,增加检查点间隔可提高数据库性能,但如果数据库意外崩溃,由于会应用更多的wal日志,这会增加数据库实例恢复的时间。

第七,调整CBO策略参数。调整 effective_cache_size,random_page_cost等多个参数,这些参数都是CBO优化器来评估执行计划时的成本估算的重要参数,在一个有数万甚至数十万条SQL语句的数据库系统而言,CBO能够产生合理的执行计划对于数据库性能至关重要,
effective_cache_size 配置参数用于估计数据库可用的磁盘缓存量,从而确定使用全表扫描或者索引扫描数据。在有大量ram的情况下,effective_cache_size值越大,优化器越趋向于使用索引扫描。effective_cache_size = RAM * 0.7是建议参考值。
random_page_cost 配置参数确定随机磁盘 I/O 相对于顺序磁盘 I/O 的成本。设置此参数以准确反映系统上随机磁盘 I/O 的成本。
根据磁盘类型的不同,对 random_page_cost 的设置也会有所不同:对于 HDD,可以设置为 4.0 到 4.5;对于 SSD,可以设置为 1.0 到 1.5。

标签:wal,数据库,IO,磁盘,日志,KingbaseES,性能,buffers
From: https://www.cnblogs.com/kingbase/p/17736775.html

相关文章

  • keycloak~在认证的action中自定义重定向地址
    场景与实现逻辑我的登录接口,在输入账号密码成功后进行中间页中间页可以通过添加Authenticator的实现类来写逻辑authenticate方法是渲染页面的,action方法是提交表单后的逻辑context.success()方法表示认证成功,将进行重写向操作可以通过Response.status(302).header(HttpHeade......
  • Python访问mysql与sqlite3数据库
    在Python中,数据库访问是一个常见的需求,无论是在Web开发还是数据分析中都非常重要。Python提供了多种数据库访问库,使得与不同类型的数据库进行交互变得简单。在这篇博客中,我们将介绍如何使用Python进行数据库访问操作,并提供一些代码示例。Python数据库访问概述Python中的数据......
  • 03 MySQL数据库的基本操作-DDL
    DDL(DataDefinitionLanguage),数据定义语言,该语言部分包括以下内容对数据库的常用操作对表结构的常用操作修改表结构可以在命令行里面进行如下的操作;也可以在Navicat图形化工具中操作创建数据库createdatabase数据库名[库选项]例如:createdatabase数据库......
  • IoT数采平台2:测试
    ModbusRTU串口测试 OPC测试 HTTP测试 MQTT透传测试  MQTT网关测试及数据上报 TCP/UDP监听,客户端连上后发送信息,客户端上报数据 tcpclient连上server后,定时发送数据udp连上server后,定时发送数据 ......
  • 3D Object Detection Essay Reading 2024.04.01
    SwinTransformerpaper:https://arxiv.org/abs/2103.14030(ICCV2021)code:https://github.com/microsoft/Swin-Transformer/blob/2622619f70760b60a42b996f5fcbe7c9d2e7ca57/models/swin_transformer.py#L458学习链接:https://blog.csdn.net/qq_37541097/article/detail......
  • SpringBoot集成Flink-CDC,实现对数据库数据的监听
    一、什么是CDC?  CDC是 ChangeDataCapture(变更数据获取) 的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。二、Flink-CDC是什么?CDCConnector......
  • IoT数采平台2:功能
    【平台端】实时监控运行监控 运行日志 基础配置设备分组 设备配置 点位管理 规则引擎规则列表告警列表告警记录设备历史系统配置系统参数系统日志资源文件版本信息接口文档 【移动端】  设备信息......
  • IoT数采平台2:文档
    【平台功能】基础配置、实时监控、规则引擎、告警列表、系统配置消息通知:Websocket设备上线、设备下线、数据变化、告警信息、实时数据【平台部署】操作系统:Windows、Linux、macOS适合场景:内网部署使用方式:软件授权【支持设备】PLC:三菱、西门子、Modbus、汇川、欧姆龙、LS......
  • 关于Win11系统 Ixchariot打流出现上行流无法打通的情况
    电脑有线接入,手机无线连接测试设备Wi-Fi,IxChariot链路从电脑IP到手机IP,可以打通。但是反过来无法进行。Win11电脑安装IxChariot(版本为6.70版本)时,安装的IXCHARIOTENDPOINTARCHIVE报错,无法安装:Error1920.SericeIxiaPerformanceEndpoint(IxiaEndpoint)failedtostart. 需......
  • IoT数采平台1:简介
    【功能概述】开箱即用;向下接入不同设备(PLC/采集网关/OPC/TCP设备/UDP设备/HTTP接入),向上通过MQTT发布消息;数采底层基于NETCORE,既支持PC机数据采集,又适配ARM架构协议适配网关【平台功能】基础配置、实时监控、规则引擎、告警列表、系统配置消息通知:Websocke......