审计日志记录的内容介绍

审计日志记录的主要内容如下:
thread_id: 线程号,同processlist中的ID;
taskid:每个sql任务编号;
start_time:开始执行时间;
end_time:结束执行时间;
user_host:登录的用户和IP,显示格式为:priv_user[user]@hostname[ip]
user:用户名;
host_ip: 用户登录端IP地址;
query_time:执行语句所用时间;
rows:行数;
db:执行语句所针对的数据库;
table_list: 涉及表,格式:<db>.<tb>[,...];
sql_text:记录执行用时大于long_query_time设定值的SQL语句;
sql_type:sql类型,如DDL、DML、DQL、OTHERS;
sql_command: sql命令类型,如SELECT、UPDATE,INSERT,LOAD等;
algorithms: 涉及的算子,比如JOIN、WHERE、GROUP、HAVING等;
status:sql执行状态,如SUCCESS、FAILED、KILLED等;
conn_type:用户登录方式(CAPI、ODBC、JDBC、ADO.NET、STUDIO);

info:注意:

sql_command的取值范围为:INSERT、DELETE、UPDATE、LOAD、CREATE USER、CREATE DB、CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PROCEDURE、CREATE FUNCTION、RENAME USER、ALTER DB、ALTER TABLE、ALTER PROCEDURE、ALTER FUNCTION、ALTER EVENT、DROP USER、DROP DB、DROP TABLE、DROP VIEW、DROP INDEX、DROP PROCEDURE、DROP FUNCTION、DROP EVENT、TRUNCATE、GRANT、REVOKE、SELECT和OTHERS。
algorithms的取值范围为:START_WITH、CONNECT_BY、JOIN、WHERE、GROUP、OLAP_GROUP、HAVING、OLAP_FUNC、DISTINCT、ORDER和LIMIT。若一个SQL涉及多个算子,各算子之间用逗号分割。

集群表名、字段名是否支持中文?

从862集群开始表名字段名支持中文字符,需要打开参数gcluster_extend_ident
参数gcluster_extend_ident,用来控制是否可以创建中文表名字段、特殊字符的字段。
默认为0,表示不开启,为1表示开启。
在gcluster_extend_ident为0的情况下,创建带有中文标识的库表,提示失败。
修改配置文件加入gcluster_extend_ident = 1,在不重启的情况下set global gcluster_extend_ident = 1开启,创建带有中文标识的库表,提示成功。

在8.6.2.18-R2.82869上测试,打开gcluster_extend_ident参数。

gbase> set global gcluster_extend_ident=1;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)
gbase> \q
Bye
suse103:~ # gccli guo
GBase client 8.6.2.18-R2.82869. Copyright (c) 2004-2017, GBase.  All Rights Reserved.
gbase> create table 表(列1 int,列2 varchar(10));
Query OK, 0 rows affected (Elapsed: 00:00:01.10)

gbase> insert into 表 values(1,'a啊');
Query OK, 1 row affected (Elapsed: 00:00:00.03)

gbase> select * from 表;
 +------+------+
 | 列1  | 列2  |
 +------+------+
 |    1 | a啊  |
 +------+------+
1 row in set (Elapsed: 00:00:00.02)

为什么nocopies表不起作用?

8611版本集群建议不要使用nocopies表,后续版本将兼容nocopies属性,增加参数缺省关闭。建表时即使指定nocopies属性也按照正常表创建,基于性能考虑还可以使用nocopies表。

集群层sql和下发到节点层的sql,如何对应?

下发到节点层的sql中的注释信息包含集群层sql的id信息。
例如:
在集群层执行select * from lineorder;,下发节点gc层show processlist信息如下,sql id是102。

[root@pst-red214 ~]# gccli
GBase client 8.6.1.1-16.28.81413. Copyright (c) 2004-2017, GBase.  All Rights Reserved.
gbase> show processlist;
+-----+-----------------+-----------------+------+---------+-------+-----------------------------+-------------------------+
| Id  | User            | Host            | db   | Command | Time  | State                       | Info                    |
+-----+-----------------+-----------------+------+---------+-------+-----------------------------+-------------------------+
|   1 | event_scheduler | localhost       | NULL | Daemon  | 15044 | Waiting for next activation | NULL                    |
|  52 | root            | 127.0.0.1:38654 | NULL | Sleep   |  3414 |                             | NULL                    |
| 101 | root            | 127.0.0.1:38820 | NULL | Query   |     0 | NULL                        | show processlist        |
| 102 | root            | 127.0.0.1:38822 | guo  | Query   |     3 | Sending task to gnodes      | select * from lineorder |
+-----+-----------------+-----------------+------+---------+-------+-----------------------------+-------------------------+
4 rows in set (Elapsed: 00:00:00.00)

gn层show processlist如下,下发的sql中SELECT /*192.168.105.214_102_1_2017-07-03_14:28:29*/ /*+ TID('6561') */,包含集群层sql的id 102。

[root@pst-red214 ~]# gncli
GBase client 8.6.1.1-16.28.81413. Copyright (c) 2004-2017, GBase.  All Rights Reserved.
gbase> show processlist;
+-----+-------+-----------------------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id  | User  | Host                  | db      | Command | Time | State        | Info                                                                                                 |
+-----+-------+-----------------------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 539 | gbase | 192.168.105.212:10034 | gctmpdb | Sleep   | 9962 | NULL         | NULL                                                                                                 |
| 630 | root  | 127.0.0.1:61898       | NULL    | Query   |    0 | NULL         | show processlist                                                                                     |
| 631 | root  | 192.168.105.214:57013 | gctmpdb | Query   |    6 | Sending data | SELECT /*192.168.105.214_102_1_2017-07-03_14:28:29*/ /*+ TID('6561') */ `guo.lineorder`.`lo_orderkey |
+-----+-------+-----------------------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
3 rows in set (Elapsed: 00:00:00.00)

GBase 8a集群视图有哪些使用限制?

使用限制:
(1)视图名不能和现有表名重复
(2)创建视图时SELECT语句必须引用表或视图,且引用的表或视图必须存在
(3)视图所引用的表不能是临时表
(4)创建视图时SELECT语句不能使用系统或用户变量
(5)创建视图时SELECT语句中不能包含子查询
(6)创建视图时不能使用预处理语句参数,存储过程中的参数或局部变量
(7)在存储过程中不能修改ALTER视图
(8)不能给视图添加索引
(9)不能对视图进行INSERT、UPDATE和DELETE操作