gbase8s之mysql模式相关文档大全
1参数列表命令或者参数解释备注set environment sqlmode mysql开启mysql模式gbaseoraclemysql三种模式SET FOREIGN_KEY_CHECKS 0;关闭外键检查0关闭1开启onmode -wf NLS_LENGTH_SEMANTICE4onmode -wf SQL_LOGICAL_CHAR4mysql长度是字符gbase是字节开启这个参数会将mysql的字符长度扩容4备这样mysql的中文插入gbase不会被截断mysql模式建议开启兼容字符单位onmode -wf OVERLENERROR0插入的字符的长度超过列0截断不报错1报错0截断不报错1报错onmode -wf MYSQL_DEFAULT_DBSPACEdatadbs01指定创建库的默认空间onmode -wf NOT_ADD_ESCAPE_CHAR1insert有反斜杠\不报错0关闭1开启待验证onmode -wf STRING_CASE_INSENSITIVE1设置1后所有建表语句的charncharvarcharnvarchar类型列大小写不敏感0关闭1开启onmode -wf GLS_LOAD_SINGLE_BYTE_FILE1当该环境变量设置为1 后 则dbaccess不再接受 CLIENT_LOCALE设置的值而是强制使用 en_US.8859-1单字节编码处理文件。即通过 en_US.8859-1 编码来读取插入的sql文件。由于en_US.8859-1编码规则理论上可以兼容utf-8编码所以可以将乱码文件导入到数据库内。0关闭1开启迫不得已才开启这个参数onmode -wf OLLOG_SIZE_ALL4064控制online.log大小超过4MB会产生一个online.log.bakonmode -wf EXSTMT_CACHE1缓存总开关解决insert单条插入慢等问题查看缓存配置onstat -g cfg | grep EXSTMT查看缓存信息onstat -g exssc开启缓存onmode -ex enable 或 onmode -wf EXSTMT_CACHE1关闭缓存onmode -ex off 或 onmode -wf EXSTMT_CACHE0清空缓存onmode -ex flush0关闭缓存1开启缓存EXSTMT_CACHE_HITS语句命中几次再缓存单位是次数EXSTMT_CACHE_SIZE内存限制大小单位kbEXSTMT_CACHE_NOLIMIT是否限制内存大小0不做限制1限制EXSTMT_CACHE_NUMPOOL缓存池个数单位个数onmode -wf MYSQL_OLD_VERSION1设置为1,列有not null约束insert不指定会插入默认初始化值。onmode -wf STRICT_TRANS_TABLES1不可将空值插入不接受空值的字段DML操作时目标列有not null约束和default值赋值null会转换default值onmode -wf SKIP_NAME_RESOLVE1. 性能杀手高并发下的瓶颈每个新连接都需要等待DNS查询完成这带来了额外的网络开销和延迟。在高并发场景下这个耗时会被急剧放大。全局锁风险在旧版本或某些系统上DNS解析操作不是完全并发的。当一个线程在进行DNS查询时可能会暂时“锁住”其他所有需要解析新IP的线程造成严重的连接堆积。DNS故障雪崩一旦DNS服务器响应缓慢、宕机或者网络出现波动所有新建立的MySQL连接都会卡在解析这一步导致应用启动失败或大面积超时。0关闭跳过域名解析1开启跳过域名解析2url参数参数介绍备注IFX_USE_STRENCtrue这个参数的作用如下兼容性处理在JDBC 3.50JC4X1及以后的版本中添加IFX_USE_STRENCtrue意味着当遇到非法或不支持的字符集数据时JDBC驱动程序将采用一种向后兼容的处理方式。而不是直接抛出错误或异常它会将这些非法字符转换为问号?然后将转换后的数据插入到数据库中。避免乱码问题在某些情况下如果没有正确配置字符集从数据库检索数据时可能会出现乱码。通过设置IFX_USE_STRENCtrue可以在一定程度上避免因字符编码不匹配导致的乱码问题尽管这种方式是以牺牲数据准确性将非法字符替换为问号为代价的。ifx_trimtrailingspaces1或trim_trailing_spaces1解决NLS_LENGTH_SEMANTICE1时候char(1)有空格得问题其中有一个已经验证没问题3导出insert语句echo set environment sqlmode mysql;unload to tabname.sql getinsert tabname -w \Id in (select Id from tabname )\ | dbaccess gbasedb语法如下echo set environment sqlmode mysql;unload to tabname.sql getinsert tabname -w \Id in (select Id from tabname )\ | dbaccess testdbunload to tabname.sql将数据导出到文件tabname.sqlgetinsert tabname导出格式为INSERT语句生成SQL插入语句-w Id in (select Id from tabname)WHERE条件这里条件是Id字段在tabname表的Id集合中#导出t1表id字段echo set environment sqlmode mysql;unload to t1.sql getinsert t1 -w \id in (select id from t1 )\ | dbaccess testdb#导出t2表id和name字段echo set environment sqlmode mysql;unload to t2.sql getinsert t2 -w \id in (select id from t2 ) and name in (select name from t2) \ | dbaccess -e testdb#导出所有字段echo set environment sqlmode mysql;unload to t2.sql getinsert t2 | dbaccess -e testdb4dns的优化options timeout:0.1 attempts:1 single-request single-request-reopen