热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高斯相关参数的意义与调整

参数

调整一:GS-00104:Session stack overflow

错误原因:执行INSERT、SELECT或UPDATE等命令时,会占用线程数据栈用于消息缓存,该线程数据栈的大小受_AGENT_STACK_SIZE参数控制,

当VALUE中的字段值大小超过_AGENT_STACK_SIZE取值时,上报此错误。

解决办法:请按照如下方法估算一次参数可处理的数据量:

_AGENT_STACK_SIZE = 每个字段值大小 × 参数个数 + 两次push行数据 + 类型转换

说明:

单行数据最大为64000字节,类型转换共需要1600字节。_AGENT_STACK_SIZE参数详情请参见8.1.5.4 线程处理。



  1. 根据估算结果,分批次处理适量数据。

    2 )执行如下命令调整_AGENT_STACK_SIZE参数取值,并重启数据库使其生效:

    ALTER SYSTEM SET _AGENT_STACK_SIZE = value;



调整二:CBO (Cost-Based-Optimize)

参数描述: 成本优化器开关。 ON开启,OFF关闭。

当CBO为ON时,并且表有统计信息时,SQL会根据CBO的规则生成执行计划,否则根据RBO的规则生成执行计划。

当CBO开关发生切换时,SQL-POOL中所有缓存的执行计划全部失效。

取值范围:

ON:开启

OFF:关闭

默认值: OFF



调整三:UNDO_RETENTION_TIME

参数描述:UNDO的保留时间,保留时间设置过短会导致查询出现“快照太旧”错误。

取值范围:整数,(0,2^32-1]。单位:秒。

默认值:100



调整四:线程参数调整

1)_THREAD_STACK_SIZE

参数描述:设置线程栈的大小。

取值范围:正整数,[256K,7.5M],单位为字节。

默认值:512K

2)_AGENT_STACK_SIZE

参数描述:设置线程数据栈的大小,线程数据栈用于消息缓存,可缓存的最长消息为该值的1/2。

取值范围:正整数,[512k,4G),单位为字节。

默认值:1MB

3)_LOB_MAX_EXEC_SIZE

参数描述:设置lob操作长度大小。

l 用于支持LOB类型进行表达式运算(字符处理函数、LIKE、排序等),内存从线程数据栈上申请。 配置大小不能超过_AGENT_STACK_SIZE。

取值范围:正整数,[0,4G),单位为字节。

默认值:65534字节

4)OPTIMIZED_WORKER_THREADS

参数描述:设置最优工作线程个数。

l 当会话数超过该参数设置值,会切换成会话和线程分离的模式,否则为绑定模式。

l OPTIMIZED_WORKER_THREADS可设置为小于或等于MAX_WORKER_THREADS的任意数,重启数据库服务器后MAX_WORKER_THREADS值不变。

l 设置OPTIMIZED_WORKER_THREADS大于现有MAX_WORKER_THREADS时须同时手动设置MAX_WORKER_THREADS参数值。

l 最大值不建议超过SESSIONS的配置值,否则会造成线程资源浪费。

l 当该值设置过大时,会占用更多的CPU和线程资源,在资源不足的情况下可能会导致数据库异常。

l 每个线程占用内存0.5M+。

l 由于安全函数有传入内存2G的限制,设置该线程数上限为10000。

取值范围:正整数,[2,10000]。

默认值:100



调整五:会话级调整参数

1)_SPIN_COUNT

参数描述:SPIN LOCK获取的等待次数,属于内部的高级参数,在业务并发冲突率较高的应用场景情况下,提高等待次数,有利于减少并发事务失败的概率。

取值范围:整数,[0,2^32-1]。

默认值:1000

2)_INDEX_BUFFER_SIZE

参数描述:设置单个session上的索引缓冲区大小,调大有利于减少索引在磁盘的读取次数。

索引缓冲区缓存page数量 = _INDEX_BUFFER_SIZE / PAGE_SIZE。

取值范围:正整数,[16K,32T] ,单位为字节。

默认值:8M

3)_PRIVATE_KEY_LOCKS

参数描述:每个session最多保留的key锁数量。

事务结束时,session最多保留_PRIVATE_KEY_LOCKS个key锁,并将剩下的锁释放并还给全局锁区,以备该session执行新的事务时复用。

取值范围:整数,[8,128]。

默认值:8

4)_PRIVATE_ROW_LOCKS

参数描述:每个session最多保留的行锁数量。事务结束时,session最多保留_PRIVATE_ROW_LOCKS个行锁,并将剩下的锁释放并还给全局锁区,以备该session执行新的事务时复用。

取值范围:整数,[8,128]。默认值:8

5)MERGE_SORT_BATCH_SIZE

参数描述:merge join算法中,每批次参与sort join的记录数。

取值范围:正整数,[100000,2^32-1]

默认值: 100000

6)LONGSQL_TIMEOUT

参数描述:慢查询的时间阈值,仅当慢查询日志打开时有效。DML语句执行时间超过此配置项,将被记录到慢查询日志中。

取值范围:整数,单位可支持毫秒、秒。

单位为秒时,取值范围是[0s,2^32-1s]。

单位缺省时默认为秒,取值范围是[0,2^32-1] 。

单位为毫秒时,取值范围是[0s,2^32-1s] ,即[0ms,(2^32-1)*1000ms]。

默认值:10

7)INTERACTIVE_TIMEOUT

参数描述:ZSQL连接会话的超时时长。当一个ZSQL会话在超时时长内没有任何操作时,该会话将被关闭。

取值范围:正整数,[1,2^32-1] ,单位:秒。

默认值:1800

8)UPPER_CASE_TABLE_NAMES

参数描述:只读参数,是否将对象名称转为大写。

对象名包括:表名、列名、视图名、存储过程名、自定义函数名、触发器名、表空间名、索引名、约束名。

取值范围:

TRUE:转为大写,此时SQL语句大小写不敏感。

FALSE:不转为大写,此时SQL语句大小写敏感。

默认值:TRUE

9)MAX_ALLOWED_PACKET

参数描述:通信允许的最大报文大小

取值范围:[96K,64M],单位为字节。

默认值:64M



调整六:软解析

1)_DISABLE_SOFT_PARSE

参数描述:是否禁用软解析功能。

取值范围:

l TRUE:禁用软解析功能。禁用情况下8.2.4.52 DV_SQLS视图功能不可用。

l FALSE:启用软解析功能。启用情况下会缓存SQL的解析树,以提速相同SQL语句执行速度,同时支持8.2.4.52 DV_SQLS视图功能。

默认值:FALSE

2)_HINT_FORCE

参数描述:是否打开强制优化开关。

取值范围:整型。

0:禁用所有强制优化功能。

1:启用ordered强制优化。

2:启用nested loop强制优化。

4:启用merge强制优化。

8:启用hash强制优化。

如果需要同时启用以上多种强制优化,则配置为多项之和。比如同时启用ordered和

hash,则配置为9。

默认值:0



调整七:实例级其他参数



  1. UNDO_RETENTION_TIME

    参数描述:UNDO的保留时间,保留时间设置过短会导致查询出现“快照太旧”错误。

    取值范围:整数,(0,2^32-1]。单位:秒。

    默认值:100



  2. FILE_OPTIONS

    参数描述:在支持的平台上,支持文件系统开启或关闭Direct I/O或异步I/O功能,以及设置文件的打开方式。该参数别名为FILESYSTEMIO_OPTIONS。

    取值范围:

    l NONE:禁用Direct I/O和异步I/O,并以O_SYNC方式打开redo文件。

    l DIRECTIO:redo文件启用Direct I/O,并以O_SYNC方式打开redo文件。

    l FULLDIRECTIO:所有文件启动DIRECT I/O,并以O_SYNC方式打开redo文件。

    l ASYNCH:启用异步I/O,并以O_DSYNC方式打开redo文件。如果参数值配置为ASYNCH,必须保证系统安装了libaio库。

    l DSYNC:以O_DSYNC方式打开DATAFILE文件,并以O_DSYNC方式打开redo文件。

    l FDATASYNC:以默认方式打开DATAFILE文件,即二进制和读写方式,并以O_DSYNC方式打开redo文件。

    l SETALL:启用Direct I/O和异步I/O,并以O_DSYNC方式打开redo文件。

    默认值:NONE



  3. INSTANCE_NAME

    参数描述:实例名称。

    取值范围:字符串。

    默认值:zenith



4)BUF_POOL_NUM

参数描述:设置data buffer的分区数。

取值范围:正整数[1, 128]

默认值:1



  1. CR_MODE

    参数描述:表/索引的MVCC机制。

    取值范围:

    l ROW:采用行级MVCC。

    l PAGE:采用页级MVCC。

    默认值:PAGE



调整八:流控开关



  1. _ENABLE_QOS

    参数描述:是否打开流控开关。在并发性能要求较高的场景下,打开流控开关,可以让数据库达到最优性能。

    取值范围:

    TRUE:打开流控开关。

    FALSE:关闭流控开关。

    默认值:FALSE



  2. _QOS_CTRL_FACTOR

    参数描述:设置单个CPU的并发线程最大个数,当并发线程数达到最大个数时,之后的线程会进入睡眠模式,排队等待进入激活模式。

    并发线程的最大个数=FACTOR*CPU核数。此参数只在流控开关打开时有效。

    取值范围:浮点型,(0,5]。

    默认值:0.75





调整九: 日志目录



  1. LOG_HOME

    参数描述:日志的根目录。

    更改日志根目录时,RUN日志(即运行日志)、DEBUG日志(即调试日志)、AUDIT日志(即审计日志)、LONGSQL日志(即慢查询日志)的目录也随之改变。例如,

    LOG_HOME = /home/omm/data/log

    ,则RUN日志的目录为/home/omm/data/log/run

    ,DEBUG日志的目录为/home/omm/data/log/debug

    ,AUDIT日志的目录为/home/omm/data/log/audit

    ,LONGSQL日志的目录为/home/omm/data/log/longsql。

    但是,ALARM日志(即告警日志)有单独的日志目录(ALARM_LOG_DIR),不受日志根目录影响。

    取值范围:字符串。最大长度163。

    默认值:$GAUSSLOG/db_log



调整10:事务

1)DB_ISOLEVEL

参数描述:设置事务的隔离级别,保证不读脏数据。

取值范围:

l RC:Read Committed,一个sql语句内读取到的数据,是同一个版本的快照数据。

l CC:Current Committed,一个sql语句内读取到的数据,每一行都是读取时刻的最新已提交数据,所有读取出来的数据不再是一个快照数据。

默认值: RC

2)COMMIT_MODE

参数描述:COMMIT_MODE是一个高级参数,用于设置日志写入磁盘的方式,包括立即处理、批量处理两种。

取值范围:

l IMMEDIATE:立即处理。对事务不进行缓存,接收到后立即写入磁盘。此方式可以减少事务的吞吐量。

l BATCH:先缓存,再批量处理。先缓存事务的redo到Log Buffer中,达到一定量后再批量写入磁盘。

默认值:IMMEDIATE

3)COMMIT_WAIT_LOGGING

参数描述:进行事务操作时,是否等待相关redo日志写入磁盘。

取值范围:

l WAIT:待相关redo日志写入磁盘后,再进行事务操作。

l NOWAIT:无需等待相关redo日志写入磁盘,即可进行事务操作。

默认值:WAIT

4)LOCK_WAIT_TIMEOUT

参数描述:设置事务等待的阈值,等待时间超过该阈值则报错。

取值范围:整数,[0,2^32-1],单位:毫秒。

默认值: 0,表示无限等待。

5)_UNDO_SEGMENTS

参数描述:undo段数量,其决定并发能力以及总事务的数量。

该参数只能在新建数据库时设置,其他情况请勿修改。

启动数据库后该参数为只读,如需修改参数,需停止数据库后修改配置文件,重新建

库后生效。

取值范围:整型,(1,1024]。

默认值:32



推荐阅读
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
author-avatar
欧阳羽昌53
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有