崖山从0到1系列07-崖山数据库参数自优化实现

崖山从0到1系列07-崖山数据库参数自优化实现

在上一节的高可用场景中,简单提及了一下崖山数据库的自优化参数配置,但是没有深入说明,这一章专门一个章节给大家深入一下。这个功能应该说,对数据库的优化门槛降低了好多,我记得在ORACLE时代,对SGA,PGA设置有很大的讲究,很多小白由于设置的不正确导致最终安装失败。而崖山这点做的比较好,通过DBMS包的方式,直接可以根据当前数据库的运行情况给出一个最佳优化参数。

YashanDB 崖山数据库配置参数,修改方法通常使用2种方式:
方法一:
自适应配置–DBMS_PARAM.OPTIMIZE()

方法二:
使用SQL命令修改参数
ALTER SYSTEM/SESSION xxx

下面主要对方法一的实现做介绍
参数自适应配置

YashanDB为协助DBA快速决策和减少运维难度,崖山数据库提供参数自适应功能,依据环境信息给出调参配置推荐。

#基本原理
1.可在数据库NOMOUNT、MOUNT或OPEN状态下运行,区分HEAP/TAC/LSC不同表类型。

2.获取CPU核数、内存总数、空闲内存数等环境信息。

3.结合用户指定的CPU和内存限制,计算数据库可用的资源。

4.依据数据库可用资源计算内存相关参数。

5.测试数据文件和日志文件所在磁盘性能。

6.依据磁盘性能结果计算IO相关参数。

#操作步骤

1.生成推荐参数
EXEC DBMS_PARAM.OPTIMIZE();

2.查看推荐参数
SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM dual;

3.将推荐的参数写入配置文件
EXEC DBMS_PARAM.APPLY_RECOMMEND();

4.重启数据库,最终生效参数
$yasboot cluster restart -c yashandb -d

提示:
选择无业务运行的时间,并清理其他进程,避免干扰对资源的计算和测试。

运行参数配置推荐程序DBMS_PARAM.OPTIMIZE();介绍

--该程序存在可输入的参数,不写入配置文件。

-- 使用默认参数生成推荐参数。
EXEC DBMS_PARAM.OPTIMIZE();

-- 使用TAC表类型,分配80%的内存,100%的CPU,生成推荐参数后,写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(True, 'TAC', 7,10);

-- 使用默认的HEAP表类型,分配100%的内存,100%的CPU,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, NULL, 100, 100);

-- 使用LSC表类型,分配100%的内存,100%的CPU,指定datafile和redofile的路径,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, 'LSC', NULL, NULL, '/home/yashan/data', '/home/yashan/redo');

3.查看最新的推荐参数信息。

SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM dual;

4.将推荐的参数配置写入yasdb.ini文件,此过程并不会生效参数。

EXEC DBMS_PARAM.APPLY_RECOMMEND();

5.重启数据库,生效参数。
$yasboot cluster restart -c yashandb -d

包注释
DBMS_PARAM.OPTIMIZE (
apply_parameter BOOL,
table_type VARCHAR,
os_memory_limit NUMBER,
os_cpu_limit NUMBER,
data_path VARCHAR,
redo_path VARCHAR
);

apply_parameter 生成推荐参数后,是否立刻写入配置文件,默认为FALSE
table_type 主要业务的表类型,可选[HEAP,TAC,LSC],默认为HEAP
os_memory_limit 内存限制百分比,默认为100,即分配所有内存
os_cpu_limit CPU限制百分比,默认为100,即分配所有CPU
data_path datafile所在路径,默认为’‘,系统会自动获取datafile路径
redo_path redofile所在路径,默认为’',系统会自动获取redofile路径

实战演示

[yashan@localhost conf]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.2.1.100 x86_64

Connected to:
YashanDB Server Personal Edition Release 23.2.1.100 x86_64 - X86 64bit  Linux

SQL> EXEC DBMS_PARAM.OPTIMIZE();

PL/SQL Succeed.

SQL> SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM dual;

DBMS_PARAM.SHOW_RECO
----------------------------------------------------------------
********** Recommended Settings For HEAP Table ***********
+--------------------------------+-------------+-------------+-------- -+
|            name                |  current    |  recommend  | restart  |
+--------------------------------+-------------+-------------+-------- -+
| DATA_BUFFER_SIZE               |     11621M  |      11621M |  True    |
| VM_BUFFER_SIZE                 |      1483M  |       1483M |  True    |
| WORK_AREA_STACK_SIZE           |         2M  |          2M |  True    |
| WORK_AREA_POOL_SIZE            |        64M  |         64M |  True    |
| WORK_AREA_HEAP_SIZE            |       512K  |        512K |  True    |
| SHARE_POOL_SIZE                |      1483M  |       1483M |  True    |
| LARGE_POOL_SIZE                |       224M  |        224M |  True    |
| MAX_PARALLEL_WORKERS           |         32  |          32 |  True    |
| SCOL_DATA_BUFFER_SIZE          |       128M  |        128M |  True    |
| SCOL_DATA_PRELOADERS           |          2  |           2 |  True    |
| COLUMNAR_WORK_AREA_HEAP_SIZE   |        32M  |         32M |  True    |
| COLUMNAR_VM_BUFFER_SIZE        |       128M  |        128M |  True    |
| COLUMNAR_BULK_SIZE             |       1024  |        1024 |  True    |
| COMPRESSION                    |        LZ4  |         LZ4 |  True    |
| PQ_POOL_SIZE                   |       128M  |        128M |  True    |
| MAX_SESSIONS                   |        188  |         188 |  True    |
| MAX_WORKERS                    |          0  |           0 |  True    |
| TAB_QUEUE_WINDOW_SIZE          |          4  |           4 |  True    |
| BLOOM_FILTER_FACTOR            |         .3  |          .3 |  True    |
| DEGREE_OF_PARALLEL             |          1  |           1 |  True    |
| MMS_DATA_LOADERS               |          8  |           8 |  True    |
| CHECKPOINT_INTERVAL            |       256M  |        256M |  False   |
| CHECKPOINT_TIMEOUT             |         60  |          60 |  False   |
| REDOFILE_IO_MODE               |      DSYNC  |      DIRECT |  True    |
| DATAFILE_IO_MODE               |    DEFAULT  |     DEFAULT |  True    |
| COMMIT_LOGGING                 |      BATCH  |   IMMEDIATE |  False   |
| RECOVERY_PARALLELISM           |          8  |           8 |  True    |
| REDO_BUFFER_SIZE               |        32M  |         32M |  True    |
+--------------------------------+-------------+-------------+-------- -+
| total memory                   |                              15866M  |
+--------------------------------+-------------+-------------+-------- -+
Note: You can execute 'DBMS_PARAM.APPLY_RECOMMEND()' to apply the reco mmend parameters.
      After applying the parameters, you need to restart the database.
                                                                                                                                                                                                                                                                                                                                                                   

1 row fetched.

SQL> EXEC DBMS_PARAM.APPLY_RECOMMEND();

PL/SQL Succeed.

SQL> exit
[yashan@localhost conf]$ yasboot cluster restart -c yashandb -d
task completed, status: SUCCESS
[yashan@localhost conf]$
[yashan@localhost db-1-2]$ cd /data1/yashan/yasdb_data/db-1-2
[yashan@localhost db-1-2]$ cat config/yasdb.ini  --发现后面增加了数据库缓存的很多设置。
_CLUSTER_ID=66f13556453b3b887702d237aba5f8a5
NODE_ID=1-2:2
CONTROL_FILES=('?/dbfiles/ctrl1', '?/dbfiles/ctrl2', '?/dbfiles/ctrl3')
DB_FILE_NAME_CONVERT='/data1/yashan/yasdb_data/db-1-1', '/data1/yashan/yasdb_data/db-1-2'
REDO_FILE_NAME_CONVERT='/data2/yashan/redo', '/data2/yashan/redo'
DB_BUCKET_NAME_CONVERT='/data1/yashan/yasdb_data/db-1-1', '/data1/yashan/yasdb_data/db-1-2'
ARCHIVE_DEST_1=SERVICE=192.168.127.39:1689 NODE_ID=1-1:1
LISTEN_ADDR=192.168.127.40:1688
REPLICATION_ADDR=192.168.127.40:1689
RUN_LOG_FILE_PATH=/data1/yashan/yasdb_home/yashandb/23.2.1.100/log/yashandb/db-1-2/run
RUN_LOG_LEVEL=INFO
SLOW_LOG_FILE_PATH=/data1/yashan/yasdb_home/yashandb/23.2.1.100/log/yashandb/db-1-2/slow
CHARACTER_SET=UTF8
CGROUP_ROOT_DIR=/sys/fs/cgroup
HA_HEARTBEAT_INTERVAL = 1
HA_ELECTION_TIMEOUT = 9
OM_ELECTION_ENABLE = TRUE
DATA_BUFFER_SIZE = 307M
VM_BUFFER_SIZE = 184M
WORK_AREA_STACK_SIZE = 1M
WORK_AREA_POOL_SIZE = 16M
WORK_AREA_HEAP_SIZE = 512K
SHARE_POOL_SIZE = 256M
LARGE_POOL_SIZE = 16M
MAX_PARALLEL_WORKERS = 4
MAX_SESSIONS = 150
SCOL_DATA_BUFFER_SIZE = 128M
SCOL_DATA_PRELOADERS = 2
COLUMNAR_WORK_AREA_HEAP_SIZE = 32M
COLUMNAR_VM_BUFFER_SIZE = 389M
COLUMNAR_BULK_SIZE = 8192
COMPRESSION = LZ4
PQ_POOL_SIZE = 128M
MAX_WORKERS = 0
TAB_QUEUE_WINDOW_SIZE = 4
BLOOM_FILTER_FACTOR = .3
DEGREE_OF_PARALLEL = 1
MMS_DATA_LOADERS = 1
CHECKPOINT_INTERVAL = 256M
CHECKPOINT_TIMEOUT = 60
REDOFILE_IO_MODE = DSYNC
DATAFILE_IO_MODE = DEFAULT
COMMIT_LOGGING = BATCH
RECOVERY_PARALLELISM = 0
REDO_BUFFER_SIZE = 16M
[yashan@localhost db-1-2]$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king01299

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值