kingbase参数参考

kingbase.conf
###记录锁等待超过1s的操作
log_lock_waits=on
deadlock_timeout=1s 
###记录连接和断开连接的记录
log_disconnections=on
log_connections=on
###打开代码位置信息的输出
log_error_verbosity=verbose   (默认值为default)
例:"PostmasterMain, postmaster.c:1379"  函数,程序文件:行数
###修改输出sql截断的位置,越大越耗内存(不过2048可以忽略不计为2k)单位为KB,可以显示更长的sql,默认1024
track_activity_query_size=2048
###TCP会话心跳包在linux下面默认是2小时,如果已经修改了系统内核参数,则不需要再修改这里
###为防止客户端和服务端之间的网络设备主动关闭空闲tcp会话,可以设置上面3个参数。
###--每隔60s发一次心跳包,防止会话因这个tcp断开
tcp_keepalives_idle=60
tcp_keepalives_interval=10
tcp_keepalives_count=6
###默认autovacuum是开的,log_autovacuum_min_duration=0记录所有autovacuum信息到syslog日志中,默认为-1
autovacuum=on
log_autovacuum_min_duration=0
###监控io时间,会带来很大开销,一般不建议打开
track_io_timing=on
###该模块用于收集sql层面统计信息,sql被执行了多少次,总耗时,命中率,io耗时等,一般用于发现业务频繁调用sql是什么,进行针对优化
shared_preload_libraries='sys_stat_statements'
sys_stat_statements.max=5000
sys_stat_statements.track=none
sys_stat_statements.track_utility

###连续数据块扫描的成本因子(代价),表示扫描1个块的成本,例如全表扫描
seq_page_cost=1.0

###离散数据块扫描的成本因子,例如索引扫描
random_page_cost=4.0   --ssd盘建议该值调小到趋向seq_page_cost甚至相等

###每一行cpu的开销
cpu_tuple_cost=0.01

###每一个索引条目的cpu开销
cpu_index_tuple_cost=0.005

###每一个操作符的cpu开销,如果操作符的开销被重新定义,那么需要乘以这个因子
cpu_operator_cost=0.0025

###提示系统内存可用量,如大的值更偏向走索引、小的值则偏向全表扫描
effective_cache_size=4GB


==========================
 explain (analyze,verbose,buffers,costs,timing) select * from t1;
 --------------------------------------------------------------------------------------------------------
 Seq Scan on public.t1  (cost=0.00..35.40 rows=2540 width=4) (actual time=0.015..0.019 rows=10 loops=1)
   Output: a      启动成本 实际成本(含启动)  返回行数   平均宽度        启动时间   实际用时间(含启动)  返回函数  循环次数
   Buffers: shared hit=1  --代表sharebuffer里命中了1个数据块
 Planning Time: 0.059 ms
 Execution Time: 0.097 ms
(5 rows)


1.常用日志参数
logging_collector = on/off
 是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务),启动之后查看进程ps -ef|grep postgres,会多一个logger进程。
 
log_directory = 'pg_log'
日志文件目录,默认是PGDATA的相对路径,即PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径,可以定义在其他目录或者分区,但是必须先创建此目录,并修改权限。
 
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
日志文件命名形式,使用默认即可
 
log_rotation_age = 1d 
单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件
 
log_rotation_size = 10MB 
单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。
 
log_truncate_on_rotation = off
当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。
 
log_ lock_waits = off 
控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。
 
log_statement = 'none' 
# none, ddl, mod, all ---- 控制记录哪些SQL语句。none不记录,ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP 语句。mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等,all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句。
 
log_duration = off 
记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。
 
log_min_duration_statement = -1
 # -1示不可用,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超过(或等于)这个值(ms)的SQL语句。个人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用 log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读。
 
log_connections = off
是否记录连接日志
 
log_disconnections = off
是否记录连接断开日志
 
log_line_prefix = '%m %p %u %d %r ' 
日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)
 
log_timezone = 'Asia/Shanghai' 
日志时区,最好和服务器设置同一个时区,方便问题定位
 
log_filename
设置日志文件名,需结合log_truncate_on_rotation = on使用.可根据自己的需要调整, 例如:

====


系统参数详解:

net.ipv4.tcp_syncookies = 1     
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来    处理,可防范少量SYN,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1        
#表示开启重用。允许将TIME-WAIT sockets    重新用于新的TCP连接,默    认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1    
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示    关闭。

net.ipv4.tcp_tw_timestamps=1
#启动TCP时间戳

net.ipv4.tcp_fin_timeout = 30    
#表示如果套接字由本端要求关闭,这个参数决定了它保持在    FIN-WAIT-2状态的时间

net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP    发送keepalive消息的频度。缺省是    2小时,改为20分钟。

net.ipv4.tcp_keepalive_probes = 3    
#TCP发送keepalive探测以确定该连接已经断开的次数。在认定连接失    效之前,发送多少个TCP的keepalive探测包,缺省值是9。这个值乘以    tcp_keepalive_intvl之后决定了,一个连接发送了keepalive之后可以有多    少时间没有回应

net.ipv4.tcp_keepalive_intvl = 30    
#探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探    测以来没有响应的连接杀除的时间,默认值为75秒,改小可以加速丢弃    没有活动的连接

net.ipv4.ip_local_port_range = 10000 65000    
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改    为10000到65000。

net.ipv4.tcp_max_tw_buckets = 6000    
#表示系统同时保持TIMEWAIT套接字的最大数量,如果超过这个数字,    TIMEWAIT套接字将立刻被清除并打印    警告信息。默认为180000,改    为6000。
net.ipv4.tcp_max_syn_backlog = 8192
##表示指定所能接受SYN同步包的最大客户端数量,即半连接上限。默    认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.core.netdev_max_backlog = 32768
#当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这    些数据包。这个参数表示该队列的最大值

net.core.wmem_default = 8388608
#定义默认的TCP数据发送窗口大小,默认值为229376字节

net.core.rmem_default = 8388608
#定义默认的TCP数据接收窗口大小,默认值为229376字节

net.core.rmem_max = 16777216
#定义TCP数据接收窗口的最大大小,默认值为131071字节

net.ipv4.tcp_synack_retries = 2
#tcp_synack_retries 显示或设定 Linux 核心在回应 SYN 要求时会尝试    多少次重新发送初始 SYN,ACK 封包后才决定放弃。这是所谓的三段交    握 (threeway handshake) 的第二个步骤。即是说系统会尝试多少次去建    立由远端启始的 TCP 连线。tcp_synack_retries 的值必须为正整数,并    不能超过 255。因为每一次重新发送封包都会耗费约 30 至 40 秒去等    待才决定尝试下一次重新发送或决定放弃。tcp_synack_retries的缺省值    为 5,即每一个连线要在约 180 秒 (3 分钟) 后才确定逾时。

net.ipv4.tcp_syn_retries = 2
#对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不    应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物    理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外    的连接,对进来的连接,是由tcp_retries1 决定的)

net.ipv4.route.gc_timeout = 100
#路由缓存刷新频率,当一个路由失败后多长时间跳到另一个路由,默认    是300。

net.ipv4.tcp_wmem = 8192 436600 873200
#为自动调优定义每个 socket 使用的内存。
    #第一个值是为 socket 的发送缓冲区分配的最少字节数。
    #第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负    载不重的情况下可以    增长到这个值。
    #第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆    盖)。

net.ipv4.tcp_rmem  = 32768 436600 873200
#与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区    的值。

net.ipv4.tcp_mem = 94500000 91500000 92700000
#确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常    是 4KB)。
    #第一个值是内存使用的下限。
    #第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
    #第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存    的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内    存页,而不是字节)。

net.ipv4.tcp_max_orphans = 3276800
#最大孤儿套接字(orphan sockets)数,单位是个
附录2
数据库参数详解:
listen_addresses='*'
#表示kingbase监听程序绑定在所有本地IP上。先通过listen_address来    过滤连接。比先设置listen_address = '*' 再验证sys_hba.conf文件效率高,    耗费的资源少。

port=54321
#表示数据库端口为54321(默认为54321,如与其他应用冲突,可更改)

max_connections=1000
#表示最大连接数。不应比实际值多太多,增大这个参数可能会让数据库    申请更多的System V共享内存或信号灯,这可能会因为超过操作系统默    认配置值导致无法启动。

shared_buffers=RAM*0.4GB             
#KingbaseES 统一管理实例所用的内存资源。配置参数 shared_buffers     决定了数据库实例使用多少内存。当系统启动时,数据库实例向操作系    统申请一块大内存(大小由 shared_buffers 决定)作为共享内存。在这    之后各个线程对内存资源的使用都在这块内存里操作。推荐设置值为物    理内存的25% ~ 40%。

work_mem =10MB
#声明内部排序和哈希操作可使用的工作内存大小。该内存是在开始使用    临时磁盘文件之前使用的内存数目。数值以kB为单位的,缺省是 1024     (1MB)。请注意对于复杂的查询,可能会同时并发运行好几个排序或者    哈希操作,每个都会使用这个参数声明的这么多内存,然后才会开始求    助于临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。    因此使用的总内存可能是 work_mem 的好几倍。ORDER BY, DISTINCT     和mergejoin都要用到排序操作,而哈希操作在哈希连接、哈希聚集和以    哈希为基础的 IN 子查询处理中都会用到。该参数是会话级参数。

maintenance_work_mem=1GB
#声明在维护性操作(比如 VACUUM, CREATE INDEX, ALTER TABLE     ADD FOREIGN KEY 等)中使用的最大的内存数。以kB为单位,缺省是     16384 (16MB)。 因为在一个数据库会话里,任意时刻只有一个这样的操    作可以执行,并且一个数据库安装通常不会有太多这样的工作并发执行,    把这个数值设置得比 work_mem 更大是安全的。更大的设置可以改进清    理和恢复数据的速度。推荐每GB的物理内存设置50MB。

effective_cache_size=RAM*0.5GB    ——RAM指内存(free -g)
#优化器假设一个查询可以使用的最大内存(包括kingbase使用的和操作    系统缓存),和shared_buffer等内存无关,只是给优化器生成计划使用    的一个假设值。

log_rotation_size=100MB
#单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件    最大只能到100M,否则将新生成一个日志文件。

log_checkpoints=on
#当数据库进行一项大更新操作时,如果参数设置不当,会在日志里留下    大量的告警信息,频繁的做checkpoint会导致系统变慢,不用设置都会    有。但是不会记录系统正常的checkpoint,如果想看系统一天之类发生    了多少次checkpoint,以及每次checkpoint的一些详细信息,比如    buffer,sync等,就可以通过设置log_checkpoints,该参数默认值是off。

log_connections=on
#是否记录用户连接信息


log_disconnections=on
#是否记录用户连接断开信息

log_lock_waits=on
#当一个会话被锁的等待时间超过deadlock_timeout是否产生一个日志信    息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。

log_autovacuum_min_duration=0
#这个参数用来记录 autovacuum 的执行时间,当 autovaccum 的执行    时间超过 log_autovacuum_min_duration参数设置时,则autovacuum    信息记录到日志里,默认为 "-1", 表示不记录。

log_temp_files=0
#当SQL有排序、临时查询结果或hash时,会生成临时文件。这件临时文    件有时会比较大,需要监控,可以设置参数log_temp_files为一个整数值,    当临时大于这个值时,则把临时文件的信息打印到日志中。

log_statement='ddl'
# none, ddl, mod, all ---- 控制记录哪些SQL语句。none不记录,ddl记录    所有数据定义命令,比如CREATE,ALTER,和DROP 语句。mod记录所    有ddl语句,加上数据修改语句INSERT,UPDATE等,all记录所有执行的语    句,将此配置设置为all可跟踪整个数据库执行的SQL语句。
设置日志记录内容--log_statement:none, ddl, mod, and all 。

None表示不记录。

ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP语句。

mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等。

all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句,但会对数据库性能产生较大影响,生产环境不建议配置此值。

log_min_duration_statement=1000
#单位:毫秒,可以设置一定时长的参数(log_min_duration_statement),    来记录超过该时长的所有SQL,对找出当前数据库的慢查询很有效。-1    表示不记录,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超    过(或等于)这个值(ms)的SQL语句。 比如log_min_duration_statement =     2000,记录超过2秒的SQL,改完需要reload。

lc_messages='C'
#设置信息显示的语言。可接受的值是操作系统相关的。如果这个变量设    置为空字符串,那么其值将以一种系统相关的方式从服务器的执行环境    中继承。缺省值为zh_CN.UTF-8。有效值可以有两种形式:'C'或语言.    编码格式,如:zh_CN.UTF8、zh_CN.GB18030等,对于后一种形式必须    指定编码。
log_line_prefix='%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
#这是一个 printf 风格的字符串,用以设置在日志的每行开头输出内容。    缺省是空字符串。日志输出前缀,可根据自己需求需要设置(能够记录时间,    用户名称,数据库名称,客户端IP和端口,方便定位问题)

char_default_type='char'
#定长字符串,如果显式指定了 CHAR,则以字符为单位;如果显式指    定了 BYTE,则以字节为单位;如果没有显式指定,则以系统参数     char_default_type 为准,若系统参数 char_default_type 为 CHAR,则以    字符为单位,否则以字节为单位。n缺省为1。

max_locks_per_transaction=1024
#设置每个事务最多可以持有的锁的个数。如果应用可能在一个事务里面    修改很多不同的表,可能需要提高这个数值。缺省值为64,对于大多数    应用已经足够。这个参数只能在服务器启动的时候设置。

ora_date_style=on
#默认为off,日历日期形式为年,月,日
#值为on时,日历日期形式为(年,月,日,时,分,秒)。

ora_format_style=on
#开关开启时,格式化输出(to_char,to_timestamp...)兼容oracle,默认    值为off。

ora_func_style=on
#设置兼容Oracle函数行为,默认为true启用状态。当启用 (true)    ora_func_style时, sequence.nextval兼容Oracle的Sequence伪列行    为。 比如,SELECT SEQ.NEXTVAL AS A, SEQ.NEXTVAL AS B FROM     DUAL,结果A B 值相 同。 ltrim/rtrim/btrim兼容Oracle对应函数行为,    最长的只包含characters只能是 一个字 符。 textcat兼容Oracle字符    串连接NULL时候,结果为字符串本身。 regexp_replace兼容Oracle    该函数行为,regexp_replace参数中有NULL出现,当做空串 处理。 当    关闭(false)ora_func_style时,上述函数表现为原有形式。

ora_input_emptystr_isnull=on
#设置空串输入的输入形式(空串或NULL)及部分函数返回值空串输出    形式(空串或 NULL),默认为true启用状态。当启用(true)    ora_input_emptystr_isnull时, 既可 以输入空串有可以输入为NULL,    那么空串将变成NULL的形式输入。比如,我们向没有空值限制列加入    数据空串数据时候, 实际空串会被当做NULL存入该列中。 COMMENT    注释对象信息时候,注释信息(text)为空串时候,空串作为NULL处 
理,就表示删除对象信息。 regexp_replace和ltrim/rtrim/btrim返回    值为空串时候,返回NULL。 当关闭(false)ora_input_emptystr_isnull    时,输入空串依旧作为空串处 理;上述函数返回值为空串时候,依旧返    回空串。

ora_numop_style=on
兼容oracle number类型数据的operator

idle_in_transaction_session_timeout(单位ms)和client_idle_timeout(单位s)这个参数有啥区别
一个是针对idle会话的(空闲会话),一个针对idle_in_transaction的(事务中空闲),这个就相当于 begin; 然后不操作的空闲时间

test=# select * from sys_settings  where name ='client_idle_timeout' or name ='idle_in_transaction_session_timeout';
-[ RECORD 1 ]---+-----------------------------------------------------------------
name            | client_idle_timeout
setting         | 0
unit            | s
category        | Client Connection Defaults / Statement Behavior
short_desc      | Sets the maximum allowed duration of any client idling interval.
extra_desc      | A value of 0 turns off the timeout.
context         | user
vartype         | integer
source          | default
min_val         | 0
max_val         | 1800
enumvals        | 
boot_val        | 0
reset_val       | 0
sourcefile      | 
sourceline      | 
pending_restart | f
-[ RECORD 2 ]---+-----------------------------------------------------------------
name            | idle_in_transaction_session_timeout
setting         | 0
unit            | ms
category        | Client Connection Defaults / Statement Behavior
short_desc      | Sets the maximum allowed duration of any idling transaction.
extra_desc      | A value of 0 turns off the timeout.
context         | user
vartype         | integer
source          | default
min_val         | 0
max_val         | 2147483647
enumvals        | 
boot_val        | 0
reset_val       | 0
sourcefile      | 
sourceline      | 
pending_restart | f
 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值