1. 问:opt空间放多大?业务数据能指定位置吗?
答:opt在生产环境需要TB级容量,一般生产环境都能达到。
业务数据可以指定位置,即自己建立表空间。但是建议使用默认/opt空间,可以在初始做RAID后将最大的逻辑盘分配给/opt。
2. 问:gcware等服务启停在哪个节点上执行?
答:每个节点都需要单独去启停gcware等服务。可以使用C3工具在某一个节点上统一启停所有节点的服务。需要注意:C3工具只能在集群的一个节点上部署使用,生产环境慎用C3工具,因为曾发生过因使用C3工具导致发出命令太多导致服务器cpu全占满的情况。
3. 问:Liunx的root密码在安装完操作系统后是否能修改?
答:能修改,但不建议修改,一旦修改需要在集群各节点重新手动建立互信,因为集群内部很多服务和通信需要使用linux的root用户。
4. 问:监控工具的阈值是否能设置?
答:能设置,在采集中心安装目录GClusterMoniterCenter/conf下修改alarmKeyItems.properties文件,修改后需要重新启动采集中心服务后起效。
5. 问:gcadmin showlock能否看到这个sql的进程号?有什么方式能看到进程号?
答:可以。新版集群的gcadmin showlock命令可以看到sql的进程id,在content栏目中可查看id,举例如下:[gbase@wdz150 ~]$ gcadmin showlock
+===============================================+| GCLUSTER LOCK |+===============================================++---------+-----+-------+-----------+------+----+|Lock name|owner|content|create time|orphan|type|+---------+-----+-------+-----------+------+----+Total : 0
[gbase@wdz150 ~]$ gcadmin showlock
+===============================================================================================| GCLUSTERLOCK |
+===============================================================================================+--------------------------------------------+--------------+----------------+--------------+------+----+
| Lock name | owner | content | create time |orphan|type|
+--------------------------------------------+--------------+----------------+--------------+------+----+
|test |192.168.103.32|LOCK_DMLEX: 23 |20140312172619|FALSE |S |
+--------------------------------------------+--------------+----------------+--------------+------+----+
|test.tt580d5f90-b287-4199-b057-e6fbd44b5bfa |192.168.103.32|LOCK_DMLEX: 23 |20140312172619|FALSE |E |
+--------------------------------------------+--------------+----------------+--------------+------+----+
|test.tt |192.168.103.32|LOCK_DDL_DML:23|20140312172619|FALSE |S |
+--------------------------------------------+--------------+----------------+--------------+------+----+
|test.tt.09b5beec-1ef7-4fa6-9850-c4217a781e0f|192.168.103.32|LOCK_DMLEX: 23 |20140312172619|FALSE |E |
+--------------------------------------------+--------------+----------------+--------------+------+----+Total : 4
然后在锁的节点上,另外启动一个session,连接数据库后,检查id是content中的数字的为执行的sql。gbase> show processlist;
+----+-------+----------------------+------------+---------+------+-------+---------------------------------+
| Id | User | Host | db | Command | Time | State |Info |
+----+-------+----------------------+------------+---------+------+-------+---------------------------------+
| 23 | root | localhost | test | Query | 3 | init |insert into tt select * from tt |
| 24 | root | 192.168.103.32:30294 | test | Sleep | 95 | |NULL |
| 25 | gbase | 192.168.103.32:30297 | NULL | Sleep | 95 | |NULL |
| 26 | gbase | 192.168.103.32:30298 | NULL | Sleep | 2245 | |NULL |
| 27 | gbase | 192.168.103.32:30302 | gclusterdb | Sleep | 2245 | |NULL |
| 28 | gbase | 192.168.103.32:30305 | NULL | Sleep | 2245 | |NULL |
| 30 | root | localhost | test | Query | 0 | NULL | showprocesslist |
| 31 | root | 192.168.103.32:30357 | NULL | Sleep | 2 | |NULL |
+----+-------+----------------------+------------+---------+------+-------+--------
-------------------------+
8 rows in set (Elapsed: 00:00:00.00)
6. 问:中文字符是占3个字节吗?
答:utf8下是一个中文字符占3个字节,gbk下是一个中文字符占2个字节
7. 问:oracle中date可包含时间,8a中date可以吗?还是必须datetime才可以?
答:8a的date中只保存日期,insert时如果有时间语法可以过去,但实际不存储时间,要存储时间必须使用datetime类型。
日期和时间的组合类型支持的范围是‚0001-01-01 00:00:00.000000‛到‚9999-12-31 23:59:59.999999‛,精确到微秒;time类型也是精确到微妙;timestamp只精确到秒。
8. 问:Timestamp范围太小了,合同之类的期限超过2038年很正常,是否能扩大?
答:目前只支持这个范围,超过范围建议使用datetime类型
9. 问:用什么能获得系统当前时间?答:now()函数
10. 问:公司建议的字符集是gbk还是utf-8?答:建议使用utf-8
11. 问:修改列建议放开字段varchar的长度。
答:经过研发确定,字段类型不能使用alter命令修改。只能新增一列,然后用update语句更新。
12. 问:修改列的顺序,只能first吗?
答:列的顺序可以修改first和after两种,这两种可以满足列的所有顺序更改。语法:
alter table [database_name.]table_name
MODIFY [COLUMN] col_name column_definition FIRST | AFTER
13. 问:truncate table 会记录日志吗?它对比drop table的性能如何?
truncate实现原理?
答:不会记录日志。Truncate table是清空表的数据,数据清空后,表依然存在,drop table是删除表,是把对象也删除了,在GBase8a集群中,理论上,drop table比truncate table多做了一些工作。
14. 问:nocopies表是否能被加载?
答:经验证,nocopies表8.5.1.2版本支持加载
15. 问:datetime:“YYYY-MM-DD HH:MI:SS ”格式显示批量加
载时,能否处理空格?rtrim、ltrim
答:加载工具本身不具备数据清洗功能,空格等都不会做处理。数据清洗可以放在入库前或入库后,建议入库前做清理,这样不会影响数据库性能。数据库每时每刻都在承载着查询,在查询量小点时需要抓紧时间做加载来保证查询和入库的性能,如果同时再承载数据的库内清洗,性能肯定会受影响,所以建议在库外做清洗,保证数据库性能。
16. 问:230种文件,上千多个文件清洗,临时存储想用存储过程清
洗,咱这边不建议用,有什么好的处理方案吗?
答:具体的处理方案依赖于文件类型和清洗的要求,存储过程是在数据库内部进行数据操作的对象,在针对数据的处理上有明显优势,但如果是针对文本内容的约束性检查和处理,专用的清洗工具或者定制的清洗程序的处理效果会更好。
17. 问:多表关联时,where条件写法顺序有什么要求吗?
答:经研发确认8.5.1.2版本后的多表关联,既有join又有where条件时,优化器会根据字段类型和条数进行评估,故跟写法顺序无关。
18. 问:单表有多个where条件时,写法从右往左还是从左往右?规
则是什么?
答:经研发确认优化器会根据字段类型和条数进行评估,故跟写法顺序无关。
19. 问:初始建立了一个表并且指定了压缩模式,在后期能不能更
改该表的压缩模式
答:不能,除非删除该表,重新建立。一个表的压缩模式指定后不能后续再进行更改
20. 问:audit_log与oracle的审计日志有什么区别,是否很耗性能?答:比较耗性能。在目标和作用上,autit_log与oracle的审计日志没有区别,但由于是不同的数据库产品,在内部实现上和记录的内容上会有所不同。由于审计日志会对所有审计对象的所有审计动作实时记录日志,所以会额外地大量增加数据库的工作量,会在一定程序上消耗性能,审计对象越多、审计动作越多,则性能消耗越大。
21. 问:是否有最耗时的sql排名
答:监控网站上可查看最耗时的sql排名,但是比较耗性能。
22. 问:将autocommit设置为false,执行一个sql文件,文件末尾有
commit,如果中间有语句执行失败,那之前的是sql是执行成功还是失败
答:错误SQL语句之前的sql没有执行成功。gccli -uroot -p111111 -D test -vvv insert into t values(1,'1');select * from t;select count(*) from t;
insert into t values(1,1,'aa'); -- errorselect count(*) from t;commit;
select count(*) from t;如果按下面命令执行
gccli -uroot -p111111 -D test -vvv -f -- 加上-f操作,会忽略错误继续执行后面的语句,故错误SQL之后的正确SQL会被commit,建议不要加-f操作。23. 问:加载文件是否支持16进制分隔符?
答:format=3时支持16进制不可见的分隔符。16进制分隔符书写格式为:
delimiter='\\x01'
24. 问:源文件中分隔符之间什么都没有代表空,控制文件中如何
写?
答:null_value=''或者不写null_value参数,''加载后都为空。
25. 问:是否能在启用加载服务时直接设置并行度,用于所有加载
任务。
答:不能,集群必须在控制文件中设置参数。
26. 问:table_fields是否可以不用写全所有字段
答:必须要写全所有字段,否则会一条也导不进去。
27. 问:ump导出的数据是全量的还是某个节点分片的?
答:不能导出数据,只能导出表结构。现有版本已不支持-d参数(导出数据/不导出数据参数)。