-
存储引擎概述 存储引擎顾名思义就是数据的存放方式,比如mysql有myisam和innodb存储引擎,他们都是行存,只是myisam不支持事务。另外存储引擎还有列模式、行模式、内存数据库等等,openguass的存储引擎关系可以用以下图来表示: 下面分别介绍以下这几种存储引擎的区别:磁盘存储引擎 顾名思义是数据按照一定格式存放在物理磁盘的数据块中,opengauss的最小存储单位是page页,类似于Oracle的最小存储单位block,写入磁盘则把page页里的内容写入到物理磁盘block中。内存存储引擎 与磁盘存储引擎相反,数据是存放到内存中的,内存中的数据没有办法想磁盘一样进行持久化,但是内存数据库节省了物理磁盘到内存的IO处理,效率会更高。为了满足数据的持久化不至于重启以后数据就丢失了,目前很多数据库也会把内存里的数据按照一定条件进行落盘进行持久化处理,每次重新启动以后把物理文件内容重新加载到内存中。类似于opengauss的MOT。行存储引擎 属于磁盘存储引擎,数据按照行的格式存储在物理磁盘中,行存储引擎适合OLTP交易类系统,opengauss默认的也是行存储引擎。列存储引擎 属于磁盘存储引擎,数据按照列的格式存储在物理磁盘中,行存储引擎适合OLAP交易类系统。行存列存区别 opengauss既支持行存也支持列存,也就是目前所说的HTAP交易分析类系统,据我所知目前有部分厂商虽然都支持行存和列寸,但是需要额外的付费。用两张图展示一下一个表在行存和列存模式在物理磁盘上的存储形式:idnameage1张三322李四224王五425赵六52行存磁盘存储格式如下: 列存磁盘存储格式如下: 可见列寸更适合统计分析类交易,比如max、min等等,另外更便于压缩存放。Ustroe存储引擎 Ustore是原地更新(in-place update)设计,支持 MVCC(Multi- Version Concurrency Control,多版本并发控制),类似于Oracle的设计,最新的数据(已提交)与前版本数据(undo)分开存储,支持闪回查询等操作。但是现在这个存储引擎不是opengauss的默认存储引擎,估计后续版本稳定以后会默认此存储引擎。 Astroe存储引擎 采用追加更新模式,及同一个page页中既存在前映像也存在当前值,只是前映像会被标记为删除,当前是opengauss的默认存储引擎,Astroe存储引擎由于同一个块中包含太多的前映像,如果频繁的更新操作会导致大量的磁盘“垃圾”,因为在执行查询操作的时候即使标记了删除也会扫描,所以大大的降低性能,建议定期执行VACUUM或者VACUUM full进行清理。 和存储引擎相关的参数概述 正常情况下在执行一条sql查询的时候数据库从物理磁盘读取整个数据块到内存,然后在内存中进行过滤返回满足条件的行,当然在某些情况下可以把算子下推,来减少加载到内存的数据块数量,因此就需要在内存中开辟一块区域来存放从磁盘读取出来的块,这个类似于oracle的块高速缓冲区mysql的innodb_buffer_pool等,几乎所有的RDBMS数据库在内存中都有一块这样的区域。磁盘存储引擎 磁盘存储引擎的参数主要存放在postgresql.conf配置文件中,默认路径在DATADIR中,主要通过两个参数控制buffer的大小,主要有shared_buffers及cstore_buffers两个参数,shared_buffers是行存储引擎使用的内存,cstore_buffers主要控制列存储引擎使用的内存,如果是OLTP类系统可以把cstore_buffers调小,如果是OLAP类系统可以把cstor_buffers调大避免浪费内存,如果是HTAP类系统则都可以调大。MOT存储引擎 MOT是通过内存存储引擎管理的内存表,支持事务的ACID特性,由于内存是易丢失的,所以如果想保证数据的持久性,需要把MOT的数据同步到磁盘中,MOT是通过WAL重做日志和MOT检查点实现了数据的持久性。 MOT的参数不在postgresql.conf中进行定义,它的参数主要在mot.conf中,这里不在详细转述,请参考官方文档。也可以参考我之前些的一篇关于mot测试的笔记《MogDB学习笔记-从9开始(存储引擎和闪回)》创建基于不同存储引擎的表创建基于Astore的行存表 在Mogdb中默认创建的Astore的表,通过设置enable_default_ustore_table参数为on可以修改为默认创建Ustore的表,当然在创建表的时候可以指定storage_parameter参数选择存储引擎。CREATE TABLE astore_table ( id character varying(2) NOT NULL, name character varying(50), saler numeric(10,2), dept_no character varying(2) ) WITH (STORAGE_TYPE=ASTORE);创建基于Ustore的行存表CREATE TABLE astore_table ( id character varying(2) NOT NULL, name character varying(50), saler numeric(10,2), dept_no character varying(2) ) WITH (STORAGE_TYPE=USTORE);创建列存表CREATE TABLE column_table ( id character varying(2) NOT NULL, name character varying(50), saler numeric(10,2), dept_no character varying(2) ) WITH (ORIENTATION = COLUMN);创建MOT内存表create FOREIGN TABLE mot_table ( id character varying(2) NOT NULL, name character varying(50), saler numeric(10,2), dept_no character varying(2) );
-
GaussDB问题定位相关语句审计日志SELECT * FROM pg_query_audit('$start_time', '$finish_time');查看内存select * from pv_total_memory_detail; select contextname, count(*), sum(totalsize)/1024/1024 as "totalsize-MB", sum(usedsize)/1024/1024 as "usedsize-MB", sum(freesize)/1024/1024 as "freesize-MB" from PV_SESSION_MEMORY_CONTEXT group by contextname order by 3 desc limit 20; select contextname, sum(totalsize)/1024/1024 sum, sum(freesize)/1024/1024, count(*) count from pv_session_memory_detail group by contextname order by sum desc limit 10;查看磁盘使用情况df -h du -sh ./* | sort -nrGaussDB问题处理相关语句sql命令按时间清理所有用户连接EXECUTE DIRECT ON ALL 'select pg_terminate_session(pid,sessionid),pid,sessionid from pg_stat_activity where usename in (''***'', ''***'') and query_start < ''2022-01-25 02:09:00''';清理DN上的用户idle连接EXECUTE DIRECT ON datanodes 'select pg_terminate_session(pid,sessionid),pid,sessionid from pg_stat_activity where usename in (''usename1'', ''usename2'') and state = ''idle''';清理单个CN上的所有连接select pg_terminate_session(pid,sessionid),pid,sessionid from pg_stat_activity where usename in ('$usename1', '$usename');清理单个节点上的连接select pg_terminate_session(pid,sessionid),pid,sessionid from pg_stat_activity where usename in ('$usename1', '$usename') and query_start < '$time';确认长事务EXECUTE DIRECT ON ALL 'select pgxc_node_str() as node_name, query_start, pid, sessionid, query from pg_stat_activity where state = ''active'' order by query_start';gs_guc命令调整磁盘只读阈值gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check=95"cm_ctl 命令切换主DN到指定的DN上cm_ctl switchover -n nodeid -D datadir
-
死锁SELECT datname, deadlocks FROM dbe_perf.summary_stat_database WHERE datname NOT IN ('template0','template1');时延SELECT P80, P95 FROM dbe_perf.statement_responsetime_percentile;线程池SELECT node_name,worker_info FROM dbe_perf.global_threadpool_status;查看流控状态select * from dbe_perf.global_recovery_status order by 1,2; 连接池select count(*) from pg_stat_get_pooler_status(); SELECT source_node_name, sum(in_use) FROM dbe_perf.global_pooler_status WHERE in_use = true GROUP BY source_node_name;buffer命中率SELECT datname,blks_hit,blks_read, blks_hit/(blks_hit+blks_read) as buffer FROM dbe_perf.summary_stat_database WHERE datname NOT IN ('template0','template1');
-
华为云数据库【GaussDB入门级开发者认证】欢迎您的参与玩沙箱实验,送499元代金券活动时间:11月1日~券送完为止活动内容:沙箱实验:GaussDB 部署参与方式:本帖下方回帖即可回复内容:华为云账号+实验进度100%截图完成沙箱实验打卡以后,请填写问卷,小助手帮忙配置499元代金券哦!领到代金券以后,请点击《GaussDB入门级开发者认证-Java》进行认证购买!回帖已设置仅小助手可见,请大家按要求回复哦,不会外泄大家的隐私~注意事项请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)。其他事宜请参考【华为云社区常规活动规则】,本活动最终解释权归活动主办方所有。
-
本例只列举常用的赋权操作,其他的权限操作,可以参考产品文档。-- 先在目标数据库创建账户: create user $user_name identified by '$password'; -- 配置账号,并赋予相应权限: -- database权限,本例权限要求:需要具备create,connect权限。 grant create,connect on database $database_name to $user_name; -- schema权限,本例权限要求:需要具备create,usage权限。 grant create,usage on schema $schema_name to $user_name; -- table权限(以业务表owner执行),权限要求:需要具备表的DML权限。 grant alter, index, select,update,insert,delete on all tables in schema $schema_name to $user_name; -- 给用户附replication权限 alter user $user_name REPLICATION; -- 给用户附monitor权限: alter user $user_name monadmin;
-
分类文档链接备注最新动态cid:link_4特性清单cid:link_3原子APIcid:link_2FAQcid:link_1华为云在线课程(免费)openGauss数据库工程师学习路径cid:link_0该学习路径是HCIA-openGauss V1.0职业认证学习指引,包含openGauss概述、数据库安装部署、体系结构及关键特性、数据库及对象管理、SL基础、云数据库GaussDB等内容。华为云开发者网云数据库 RDS开放能力cid:link_5
-
2.1 常用视图pg_stat_activity pgxc_stat_activity pg_thread_wait_status pgxc_thread_wait_status dbe_perf.summary_statement + dbe_perf.statement dbe_perf.get_global_slow_sql_by_timestamp + dbe_perf.statement_history gs_asp + dbe_perf.local_active_session wdr报告 + snapshot视图2.2 常用语句查看当前正在执行语句及其执行时长select coorname, substring(0, 50, query), state, usename, now()-query_start as elp from pgxc_stat_activity where pid!=0 and usename in ('$user_name') order by elp desc; select coorname, unique_sql_id, substring(query,0,100), state, usename, now()-query_start as elp from pgxc_stat_activity where pid!=0 and usename like '%hicloud%' order by elp desc;生成计划set current_schema to $schema_name; set max_datanode_for_plan=1; -- CN上执行 explain $sql; -- 不会真正执行SQL explain verbose $sql; -- 会真正执行SQL,写操作谨慎操作 -- DN上执行 explain performance $sql; -- 会真正执行SQL,写操作谨慎操作 explain analyze $sql; -- 会真正执行SQL,写操作谨慎操作"使用PBE生成计划set current_schema to schema_name; set max_datanode_for_plan=1; prepare select_record(integer, varchar) as select col3 from t_1 where col1 = $1 and col2 = $2; explain execute select_record(1, 'abc'); explain verbose execute select_record(1, 'abc'); explain analyze execute select_record(1, 'abc'); explain performance execute select_record(1, 'abc');"动态生成计划select * from dbe_perf.statement where unique_sql_id = $unique_sql_id; -- CN执行 select * from dynamic_func_control('GLOBAL', 'STMT', 'TRACK', '{"$unique_sql_id", "L2"}'); -- 抓此SQL的FULLSQL L2 execute direct on datanodes 'select * from statement_history where unique_query_id = $unique_sql_id and query_plan ilike ''%cost%'' limit 1'; select * from dynamic_func_control('GLOBAL', 'STMT', 'UNTRACK', '{"$unique_sql_id"}'); -- 取消抓取 select * from dynamic_func_control('GLOBAL', 'STMT', 'LIST', '{}'); select * from dynamic_func_control('GLOBAL', 'STMT', 'CLEAN', '{}'); execute direct on datanodes 'select query_plan from statement_history where unique_query_id = $unique_sql_id and query_plan ilike ''%cost%''';查看当前正在执行的语句的等待事件select a.pid, a.sessionid, a.datname, a.usename, a.client_addr, a.xact_start, a.query_start, (now() - a.query_start)::text as query_runtime, w.wait_status,w.wait_event,w.locktag,w.lockmode,w.block_sessionid,a.query from pg_stat_activity a join pg_thread_wait_status w on a.sessionid = w.sessionid where a.pid <> pg_backend_pid() and a.state = 'active' and a.client_addr is not null order by query_runtime desc; select * from pgxc_thread_wait_Status where tid in (select pid from pgxc_stat_activity where pid != 0); select * from pg_thread_wait_Status where tid in (select pid from pg_stat_activity where pid != 0); select sample_time,substring(unique_query,0,100),application_name,wait_status from dbe_perf.local_active_session where wait_status not in (''none'',''wait cmd'') order by start_time desc;查询连接数-- 查询整个实例的用户连接数,CN执行 select count(*) from pgxc_stat_activity where usename in ('$user1', '$user2'); -- 查询当前集群上所有CN的连接数,CN执行 select coorname, count(*) from pgxc_stat_activity group by 1; -- 查询一个节点的用户连接数,CN和DN均可 select count(*) from pg_stat_activity where usename in ('$user1', '$user2');查看表上的锁select a.pid,a.sessionid,substring(a.query,0,50) from pg_stat_activity a,pg_locks l where a.pid=l.pid and a.sessionid=l.sessionid and l.relation=(select oid from pg_class where relname='$table_name');
-
应用是python3.4 应用升级python版本比较困难,请问有没有3.4版本对应的psycopg2库
-
想要远程使用JDBC连接GaussDB,但在设置监听地址时,重启数据库会报错使用语句 gs_guc set -I all -c"listen_addresses='localhost,10.62.45.7'" 重启服务后报错,无法启动更改为原先的localhost可以启动但会出现如下WARNING
-
想请问一下,在ECS上部署了openGauss后尝试远程连接,连接没有成功但是再次打开数据库就发现无法打开,且restart也不可以重装了以后再次启动数据库就会显示 could not create any HA TCP/IP sockets,有什么办法可以解决吗?
-
1.1 常用函数pg_database_size() -- 数据库使用的磁盘空间。 pg_table_size() -- 表使用的磁盘空间。 pg_total_relation_size() -- 表和索引共使用的磁盘空间。 pg_indexes_size() -- 索引使用的磁盘空间。1.2 常用系统表pg_class -- 存储数据库对象信息及其之间的关系。 pg_index -- 存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 pg_namespace -- 存储schema相关的信息。 pg_database -- 存储数据库相关的信息。1.3 常用视图pg_stat_user_tables -- 显示所有用户自定义普通表和toast表的状态信息。 pg_stat_user_indexes -- 显示数据库中用户自定义普通表和toast表的索引状态信息。1.4 常用语句查询库大小select datname, pg_database_size(datname), pg_database_size(datname)/1024/1024/1024 as "dataSize_GB" FROM pg_database where datname not in ('template1', 'template0');查看schema的所有者-- pg_user这个视图只有sysadmin用户有权限查,普通用户无法查询。 SELECT s.nspname schema_name,u.usename schema_owner FROM pg_namespace s, pg_user u WHERE nspname = '$schema_name' AND s.nspowner = u.usesysid;获取表结构set current_schema to $schema; select pg_get_tabledef('$table_name'); 或 select pg_get_tabledef('$schema_name.$table_name');示例:select pg_get_tabledef('testschema.t1'); pg_get_tabledef ---------------------------------------- SET search_path = testschema; + CREATE TABLE t1 ( + id integer, + name character varying(15) + ) + WITH (orientation=row, compression=no)+ DISTRIBUTE BY HASH(id) + TO GROUP group_version1; (1 row)查询表大小-- 查询单个确定表的大小。 select pg_table_size('$schema_name.$table_name'); -- 不包含索引,单位B select pg_total_relation_size('$schema_name.$table_name'); -- 包含索引,单位B -- 查询连接的数据中,所有用户表的大小 SELECT schemaname,relname, pg_total_relation_size(concat(schemaname,'.',relname))/1024/1024/1024 table_size_GB FROM PG_STAT_USER_TABLES ORDER BY 3 DESC; -- 包含索引 SELECT schemaname,relname, pg_table_size(concat(schemaname,'.',relname))/1024/1024/1024 table_size_GB FROM PG_STAT_USER_TABLES ORDER BY 3 DESC; -- 不包含索引" SELECT table_name,pg_size_pretty(table_size) AS table_size,pg_size_pretty(indexes_size) AS indexes_size,pg_size_pretty(total_size) AS total_size FROM (SELECT table_name,pg_table_size(table_name) AS table_size,pg_indexes_size(table_name) AS indexes_size,pg_total_relation_size(table_name) AS total_size FROM (SELECT concat(table_schema,concat('.',table_name)) AS table_name FROM information_schema.tables where table_schema ilike '$schema_name') AS all_tables ORDER BY total_size DESC) AS pretty_sizes;示例-- 查询单个确定表的大小。 select pg_table_size('testschema.t1'); pg_table_size --------------- 17801216 (1 row) -- 查询连接的数据中,所有用户表的大小 SELECT schemaname,relname, pg_total_relation_size(concat(schemaname,'.',relname))/1024/1024/1024 table_size_GB FROM PG_STAT_USER_TABLES ORDER BY 3 DESC; -- 包含索引 schemaname | relname | table_size_gb ------------+--------------+-------------------- testschema | t_ran2 | 2.288818359375e-05 testschema | t_ran1 | 1.52587890625e-05 testschema | t_ran3 | 1.52587890625e-05 -- 需要指定schema SELECT table_name,pg_size_pretty(table_size) AS table_size,pg_size_pretty(indexes_size) AS indexes_size,pg_size_pretty(total_size) AS total_size FROM (SELECT table_name,pg_table_size(table_name) AS table_size,pg_indexes_size(table_name) AS indexes_size,pg_total_relation_size(table_name) AS total_size FROM (SELECT concat(table_schema,concat('.',table_name)) AS table_name FROM information_schema.tables where table_schema ilike 'testschema') AS all_tables ORDER BY total_size DESC) AS pretty_sizes; table_name | table_size | indexes_size | total_size -------------------------+------------+--------------+------------ testschema.t_ran2 | 24 kB | 0 bytes | 24 kB testschema.t_ran3 | 16 kB | 0 bytes | 16 kB testschema.t_ran1 | 16 kB | 0 bytes | 16 kB查看表的统计信息-- 查看指定schema和table的统计信息。 select * from pg_stat_user_tables where schemaname = '$schema_name' and relname = '$table_name'; -- 查询全库的表的活跃元组数、死元组数及死元组占比。 select schemaname, relname, n_live_tup, n_dead_tup, (n_dead_tup/(n_live_tup+1)) as dead_rating from pg_stat_user_tables order by rating desc,n_dead_tup desc limit 30; -- 查看表大小及活跃元组、死元组、死元组比例。 select schemaname, relname, pg_size_pretty(table_size) as table_size, pg_size_pretty(indexes_size) as indexes_size, pg_size_pretty(total_size) as total_size, round((total_size / pg_database_size(current_database())) * 100,2) as "percent(%)", n_live_tup,n_dead_tup,(n_dead_tup/(n_live_tup+1)) as dead_tuple_rating from (select schemaname, relname, pg_table_size(concat(schemaname,'.',relname)) as table_size, pg_indexes_size(concat(schemaname,'.',relname)) as indexes_size, pg_total_relation_size(concat(schemaname,'.',relname)) as total_size,n_live_tup,n_dead_tup from pg_stat_user_tables) order by "percent(%)" desc;示例:select schemaname, relname, pg_size_pretty(table_size) as table_size, pg_size_pretty(indexes_size) as indexes_size, pg_size_pretty(total_size) as total_size, round((total_size / pg_database_size(current_database())) * 100,2) as "percent(%)", n_live_tup,n_dead_tup,(n_dead_tup/(n_live_tup+1)) as dead_tuple_rating from (select schemaname, relname, pg_table_size(concat(schemaname,'.',relname)) as table_size, pg_indexes_size(concat(schemaname,'.',relname)) as indexes_size, pg_total_relation_size(concat(schemaname,'.',relname)) as total_size,n_live_tup,n_dead_tup from pg_stat_user_tables) order by "percent(%)" desc; schemaname | relname | table_size | indexes_size | total_size | percent(%) | n_live_tup | n_dead_tup | dead_tuple_rating ------------+--------------+------------+--------------+------------+------------+------------+------------+------------------- testschema | t_ran2 | 24 kB | 0 bytes | 24 kB | .01 | 4 | 0 | 0 testschema | t_ran1 | 16 kB | 0 bytes | 16 kB | .01 | 3 | 0 | 0 testschema | t_ran3 | 16 kB | 0 bytes | 16 kB | .01 | 6 | 0 | 0查询数据是否倾斜SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM table_name GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc;查询给定分布键归属的DNselect * from pgxc_node where node_id = (select xc_node_id from $table where $col = $value limit 1);示例select * from pgxc_node where node_id = (select xc_node_id from t1 where id = 1); node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_po rt1 | nodeis_central | nodeis_active -------------------+-----------+-----------+--------------+------------+--------------+----------------+----------------+------- dn_xxx | D | 45700 | 10.30.41.163 | 45700 | 10.30.41.163 | t | f | f | -564789568 | 45702 | 45703 | 0 | 0 | f | t查询表的主键select pg_constraint.conname as pk_name from pg_constraint inner join pg_class on pg_constraint.conrelid = pg_class.oid where pg_class.relname = '$table_name' and pg_constraint.contype = 'p';查询事务信息select xmin, xmax, * from $table_name;
-
查询的时候报错ERROR: canceling statement due to conflict with recovery Detail: User query might have needed to see row versions that must be removed.Line Number: 1
-
OceanBase字段类型和字符集与GaussDB映射关系分析JackCao1 字符集本文基于OceanBase 3.22版本分析。1.1 CHARSET | CHARACTER SET指定表中列的默认字符集,可使用字符集如下:utf8utf8mb4gbkutf16gb18030binary为支持无缝迁移,OceanBase在语法上将 UTF8 视为 UTF8MB4 的同义词。 数据库默认的字符集是 utf8mb4。2 数据类型https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000363773https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000365129数值类型OceanBase 数据库支持所有标准 SQL 数值类型,包括精确数值类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC )、近似数值类型(FLOAT 和 DOUBLE )、存储位值的 BIT 数据类型和扩展类型(TINYINT、MEDIUMINT 和 BIGINT)。说明关键字 BOOL/BOOLEAN 是 TINYINT 的同义词。 关键字 INT 是 INTEGER 的同义词。2.1 数值类型分类OceanBase 数据库当前版本支持的数值类型可以划分为如下四类:整数类型:BOOL/BOOLEAN/TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER 和 BIGINT。定点类型:DECIMAL 和 NUMERIC。浮点类型:FLOAT 和 DOUBLE。Bit-Value 类型:BIT。数值类型在定义时可以指定 Precision(精度,即字段长度)和 Scale(范围,即小数位数),不同数值类型的 Precision 和 Scale 的含义可能有所不同,详情请参见各类型的说明。ZEROFILL 属性数值类型在定义时可以通过 ZEROFILL 关键字指定最小显示宽度,同时将该类型隐式定义为 UNSIGNED。在数据实际显示宽度不足最小显示宽度时,通过先将小数部分补零到 Scale 上限,然后将整数部分补零到 Precision 上限的方式,将显示宽度补足到最小显示宽度。例如:INT(5) ZEROFILL:当数据值为 123 时,将显示为 00123。DECIMAL(10, 5) ZEROFILL:当数据值为 123.456 时,将显示为 00123.45600。2.1.1 整数类型长度(字节)值域(有符号)值域(无符号)BOOL/BOOLEAN/ TINYINT1[-2^7^, 2^7^ - 1][0, 2^8^ - 1]SMALLINT2[-2^15^, 2^15^ - 1][0, 2^16^ - 1]MEDIUMINT3[-2^23^, 2^23^ - 1][0, 2^24^ - 1]INT/INTEGER4[-2^31^, 2^31^ - 1][0, 2^32^ - 1]BIGINT8[-2^63^, 2^63^ - 1][0, 2^64^ - 1]2.1.2 定点类型定点类型为变长、精确数值类型,值域和精度取决于 Precision 和 Scale,以及是否为无符号。DECIMAL 等价于 NUMERIC。语法如下:DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]M 是可以存储的总位数(Precision),D 是小数点后的位数(Scale)。小数点和负数符号"-"不计入 M。如果 D 为 0,则值没有小数点或小数部分。整数部分最大有效位数等于 M 减去 D 的值,即 Precision 减去 Scale 的值。所有带有 DECIMAL 列的基本计算(+、-、*、/)都使用 65 位的精度。DECIMAL 的 M 最大值为 65,D 最大值为 30。如果省略 D,则默认为 0。如果省略 M,则默认为 10。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。如果指定 UNSIGNED,则不允许为负值。例如 DECIMAL(5, 2),整数部分和小数部分最大有效位数分别为 3 和 2,所以值域为 [-999.99, 999.99]。如果同时定义为 UNSIGNED,则值域为 [0, 999.99]。如下类型也是 DECIMAL 的同义词。其中,FIXED 可用于与其他数据库系统兼容。DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]2.1.3 浮点类型类型长度(字节)值域精度FLOAT4[-3.402823466E+38, -1.175494351E-38]、0 和 [1.175494351E-38,3.402823466E+38]7 位DOUBLE8[-1.7976931348623157E+308, -2.2250738585072014E-308]、0 和 [2.2250738585072014E-308,1.7976931348623157E+308]15 位FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]M 是可以存储的总位数,D 是小数点后的位数。DOUBLEDOUBLE 用于表示正常大小(双精度)浮点数。语法如下:DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]M 是可以存储总位数,D 是小数点后的位数。如果省略 M 和 D,则将值存储到硬件允许的限制范围内。双精度浮点数精确到大约 15 位小数。2.1.4 BIT-Value 类型BIT 数据类型用于存储位值。位值通过 b'value' 的形式指定,value是用 0 和 1 来指定的,例如,b'111' 表示 7,b'10000000' 表示 128。语法如下:BIT[(M)]M 表示每个值的位数,范围为 [1,64]。如果省略 M,则默认为 1。当向 BIT(M) 列插入值时,如果插入值的长度小于 M,则会在左侧填充 0。例如:将 b'101' 插入到 BIT(6) 时,相当于插入了 b'000101'。2.2 日期时间类型OceanBase 数据库支持用于表示时间值的日期和时间数据类型,包括 DATE、TIME、DATETIME、TIMESTAMP 和 YEAR。每个类型都有一个有效值范围,以及一个"零"值,可以指定无法表示的无效值。OceanBase 数据库当前版本所支持的日期和时间类型及其相关信息如下表所示。类型格式下界上界含义DATETIMEYYYY-MM-DD HH:MM:SS[.fraction]0000-00-00 00:00:00.0000009999-12-31 23:59:59.999999日期时间(不考虑时区)TIMESTAMPYYYY-MM-DD HH:MM:SS[.fraction]0000-00-00 00:00:00.0000009999-12-31 23:59:59.999999日期时间(考虑时区)DATEYYYY-MM-DD0000-00-009999-12-31日期TIMEHH:MM:SS[.fraction]-838:59:59.000000838:59:59.000000时间YEARYYYY19012155年份DATETIME、TIMESTAMP 和 TIME 的值域和精度取决于 Scale。Scale 属性表示小数部分最大有效位数,最大值为 6,默认值为 0。2.2.1 DATE DATETIME和TIMESTAMP DATE 类型用于表示具有日期部分但没有时间部分的值。DATE 值的检索和显示格式为 'YYYY-MM-DD',范围是 '0000-00-00' 到 '9999-12-31'。OceanBase 数据库允许使用字符串或数字将值分配给 DATE 列。DATETIME 类型用于表示同时包含日期和时间部分的值。DATETIME 值的检索和显示格式为 'YYYY-MM-DD hh:mm:ss',范围是 '0000-00-00 00:00:00' 到 '9999-12-31 23:59:59'。语法如下:DATETIME[(fsp)]可选 fsp 值用来指定小数位秒的精度,范围为 [0,6]。0 值表示没有小数部分。如果省略,则默认精度为 0。DATETIME 列通过使用 DEFAULT 和 ON UPDATE 子句指定当前日期和时间的自动初始化和更新。DATETIME 值可以包含秒的小数位部分,精度最高可达微秒(6 位),格式为 'YYYY-MM-DD hh:mm:ss[.fraction]',范围为 '0000-00-00 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。小数部分应始终与其他时间位用小数点分隔,不识别其他分隔符。TIMESTAMP 数据类型用于表示同时包含日期和时间部分的值。语法如下:TIMESTAMP[(fsp)]可选 fsp 值来指定小数位秒的精度,范围为 [0,6]。0 值表示没有小数部分。如果省略,则默认精度为 0。示例如下:CREATE TABLE t(C1 TIMESTAMP(6));TIMESTAMP 列可以使用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 子句指定当前日期和时间的自动初始化和更新。默认情况下,第一个 TIMESTAMP 列具有这些属性,也可以定义表中的其他 TIMESTAMP 列具有这些属性。TIMESTAMP 值可以包括秒的小数位部分,精度最高可达微秒(6 位),格式为 'YYYY-MM-DD hh:mm:ss[.fraction]',范围是 '0000-00-00 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。小数部分应始终与其他时间位用小数点分隔,不识别其他分隔符。2.2.2 TIME 类型OceanBase 数据库允许使用字符串或数字将值分配给 TIME 列。TIME 值的检索和显示格式为 'hh:mm:ss',范围是 '-838:59:59' 到 '838:59:59'。TIME 值的显示格式也可以包含秒的小数位部分,格式为 'hh:mm:ss[.fraction]' ,精度最高可达微秒(6 位),范围是 '-838:59:59.000000' 到 '838:59:59.000000'。小数部分应始终与其他时间位用小数点分隔,不识别其他分隔符。2.2.3 YEAR 类型YEAR 类型用于表示 4 位数字格式的年份。YEAR 值的检索和显示格式为 YYYY,范围为 1901 到 2155,以及 0000。2.3 字符类型OceanBase 数据库支持的字符数据类型为 CHAR、VARCHAR、BINARY 和 VARBINARY。OceanBase 数据库当前版本所支持的普通字符类型及其相关信息如下表所示。类型长度类型长度上限字符集CHAR定长256 字符UTF8MB4VARCHAR变长65535 字节UTF8MB4BINARY定长256 字节BINARYVARBINARY变长65535 字节BINARY对于CHAR 类型,以字符为长度单位;对于 VARCHAR 类型和二进制字符串 BINARY 和 VARBINARY 类型,以字节为长度单位。2.3.1 CHAR 和 VARCHARCHAR 类型声明的长度为可以存储的最大字符数。例如,CHAR(30) 表示最多可容纳 30 个字符VARCHAR 类型声明的长度为可以存储的最大字符数。例如,VARCHAR(50) 表示最多可容纳 50 个字符2.3.2 BINARY 和 VARBINARYBINARY 和 VARBINARY 类型与 CHAR 和 VARCHAR 相似,不同之处在于它们存储二进制数据而不是字符串。BINARY 类型与 CHAR 类型相似,但其存储二进制字节串。语法如下:BINARY[(M)]可选长度参数 M 表示以字节为单位的列长度。如果省略,则取 M 的默认值 1。VARBINARY 类型与 VARCHAR 类型相似,但其存储二进制字节串。语法如下:VARBINARY(M)M 表示以字节为单位的最大列长度。2.4 大对象和文本类型类型长度存储长度上限(字节)字符集TINYBLOB变长256BINARYBLOB变长65536 / 64KBINARYMEDIUMBLOB变长16777216 / 16MBINARYLONGBLOB变长50331648 / 48MBINARYTINYTEXT变长256UTF8MB4TEXT变长65536 / 64KUTF8MB4MEDIUMTEXT变长16777216 / 16MUTF8MB4LONGTEXT变长50331648 / 48MUTF8MB4在大多数情况下,可以将 BLOB 列视为一个 VARBINARY 列,可以将 TEXT 列视为 VARCHAR 列。BLOB 和 TEXT 在以下方面与 VARBINARY 和 VARCHAR 有所不同:必须指定 BLOB 和 TEXT 列上的索引前缀长度。对于 CHAR 和 VARCHAR,前缀长度是可选的。BLOB 和 TEXT 列不能有 DEFAULT 值。2.4.1 BLOBBLOB 是一个二进制大对象类型,可以存储可变数量的数据。BLOB 类型包括四种,分别是 TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们存储值的最大长度不同。BLOB 值被视为二进制字符串(字节字符串),具有二进制字符集和排序规则,比较和排序需要基于列值中字节的数值。TINYBLOB 是最大长度为 256 个字节的 BLOB 类型。每个 TINYBLOB 值都使用 1 字节长度的前缀进行存储,该前缀指示值中的字节数。BLOB 列的最大长度为 65,536 个字节。每个 BLOB 值都使用 2 字节长度的前缀进行存储,该前缀指示值中的字节数。可以为 BLOB 类型指定一个可选的长度 M。语法如下:BLOB[(M)]MEDIUMBLOB 是最大长度为 16,777,216 字节的 BLOB 类型。每个 MEDIUMBLOB 值都使用 3 字节长度的前缀进行存储,该前缀指示值中的字节数。LONGBLOBLONGBLOB 是最大长度为 50331648 或 48 M 字节的 BLOB 类型。LONGBLOB 列的最大有效长度取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个 LONGBLOB 值都使用 4 字节长度的前缀进行存储,该前缀指示值中的字节数。2.4.2 TEXT 类型TEXT 类型用于存储所有类型的文本数据。文本类型包括四种,分别是 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。它们对应于四种 BLOB 类型,并且具有相同的最大长度和存储要求。TINYTEXT 是最大长度为 256 个字符的 TEXT 类型。如果值中包含多字节字符,则最大有效长度会变小。TEXT 列的最大长度为 65,536 个字符。如果值包含多字节字符,则最大有效长度会变小。每个 TEXT 值都使用 2 字节长度的前缀存储,该前缀指示值中的字节数。可以为 TEXT 类型指定一个可选的长度 MMEDIUMTEXT 是最大长度为 16,777,216 个字符的 TEXT 类型。如果值包含多字节字符,则最大有效长度会变小。每个 MEDIUMTEXT 值都使用 3 字节长度的前缀进行存储,该前缀指示值中的字节数。LONGTEXT 是最大长度为 50331648 或 48 M 个字符的 TEXT 类型。如果值包含多字节字符,则最大有效长度会变小。LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个 LONGTEXT 值都使用 4 字节长度的前缀进行存储2.5 枚举类型枚举类型 ENUM 是一个只能有一个值的字符串对象,该值必须来自列表 'value1', 'value2', ...,枚举值必须是带引号的字符串文字。ENUM 值在内部表示为整数。一个 ENUM 列最多可以容纳 65,535 个不同的元素(实际限制小于 3000)。ENUM 为可变长度类型,支持 UTF8MB4 字符集。ENUM 语法如下:ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]2.6 集合类型SET 是一个字符串对象,它可以有零个或多个值,每个值都必须来自列表 'value1', 'value2', ...SET 为可变长度类型,支持 UTF8MB4 字符集。SET 的语法如下:SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]2.7 JSON 数据类型OceanBase 数据库支持符合 RFC 7159 标准的 JSON(JavaScript Object Notation)数据类型,用户可以保存半结构化的 JSON 数据并访问和修改 JSON 文档中的数据。JSON 数据类型具有以下优势:自动验证存储在 JSON 列中的 JSON 文档,无效的文档会报错。存储在 JSON 列中的 JSON 文档可以被转换为便于快速读取和访问的格式。当服务器必须读取以二进制格式存储的 JSON 值时,不需要从文本中解析该值。3 数据类型对应数据类型大类数据类型OceanBaseMySQLGaussDB备注数值类型整数TINYINTTINYINTintegerBOOL/BOOLEANTINYINTbooleanSMALLINTSMALLINTintegerMEDIUMINTMEDIUMINTbigintINT/INTEGERINTintegerBIGINTBIGINTbigint定点类型DECIMALDECIMALnumeric浮点类型FLOATFLOATdoubleDOUBLEDOUBLEdoubleBIT-ValueBIT-ValueBITinteger日期时间类型DATE DATETIME和TIMESTAMPDateDatedateDatetimeDatetimetimestamp without time zonetimestamptimestamptimestamp without time zonetimetimeTimetime without time zoneyearyearYEARinteger字符类型Char和varcharCharCHARcharvarcharVARCHARvarcharBinary和varbinarybinaryBINARY byteavarbinaryVARBINARY bytea大对象和文本BlobTINYBLOBTINYBLOBbyteaBLOBBLOBbyteaMEDIUMBLOBMEDIUMBLOBbyteaLONGBLOBLONGBLOBbyteaTextTINYTEXTTINYTEXTtextTEXTTEXTtextMEDIUMTEXTMEDIUMTEXTtextLONGTEXTLONGTEXTtext枚举ENUMENUMENUM enum集合SetSetSETtextJSONJSONJSONJSONjson4 字符集对应OceanBaseMySQLGaussDB备注utf8utf8mb4UTF8utf8mb4utf8mb4UTF8gbkgbkGBKutf16utf16UTF8gb18030gb18030GB18030binarybinary无明确对应取决于MySQL建表语句或环境变量。详细参见独立的文档《MySQL CHARACTER SET Binary分析》。5 参考网址:https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000354623https://open.oceanbase.com/blog/8600173https://dev.mysql.com/doc/refman/8.0/en/integer-types.htmlhttps://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.htmlhttps://dev.mysql.com/doc/refman/8.0/en/bit-type.htmlhttps://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.htmlhttps://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.htmlhttps://dev.mysql.com/doc/refman/8.0/en/char.htmlhttps://dev.mysql.com/doc/refman/8.0/en/blob.htmlhttps://dev.mysql.com/doc/refman/8.0/en/enum.htmlhttps://dev.mysql.com/doc/refman/8.0/en/set.htmlhttps://dev.mysql.com/doc/refman/8.0/en/json.htmlcid:link_0cid:link_1https://dev.mysql.com/doc/refman/8.0/en/charset.htmlhttps://dev.mysql.com/doc/refman/8.0/en/charset-mysql.htmlhttps://dev.mysql.com/doc/refman/8.0/en/charset-charsets.htmlhttps://dev.mysql.com/doc/workbench/en/wb-migration-database-postgresql-typemapping.htmlcid:link_2https://www.striim.com/docs/en/data-type-support---mapping-for-mysql-sources.htmlhttps://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000361877https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000367561
-
首先确认是否是虚拟机、网络故障虚拟机故障导致ETCD服务异常告警问题现象管控面上报etcd服务异常告警,虚拟机发生重启,热迁移、冷迁移,HA等动作。问题分析及界定在告警信息中找到实例ID、节点ID、虚拟机ID,在管控面查看虚拟机状态是否正常,能否正常登录,如果虚拟机异常无法登录,联系IaaS技术支持修复虚拟机。检查虚拟机是否发生过重启,热迁移、冷迁移、HA等动作,例如内存、网卡等问题引起热迁移。处理步骤联系IaaS技术支持修复虚拟机,确认虚拟机故障原因,例如内存、网卡等问题引起热迁移。网络故障导致ETCD服务异常告警问题现象管控面上报etcd服务异常告警,虚拟机无法登录或ping通其他节点IP, 或者监控显示网络有异常。问题分析及界定在该节点上ping其他节点IP,测试是否ping通。如果ping不通,执行步骤(1)(2),检查该节点网络、IP配置、防火墙配置等。如果ping通,执行步骤(3)确认告警时间点网络是否断开。(1)检查IP是否正常:ifconfig查看etcd使用的IP是否存在,如果不存在,排查IP配置丢失原因,常见原因是虚拟机重启后IP没有重新配置,导致丢失。(2)检查防火墙是否正常在Ruby用户下查看etcd的IP和端口: ps ux | grep etcd在root用户下iptables -L命令检查防火墙是否限制了IP和端口,如果有限制,去掉防火墙限制。(3) 查看etcd日志进入Ruby用户cd $GAUSSLOG/cm/etcd查看对应时间点的etcd_xxx.log日志,如果有如下日志,可能是etcd节点间网络断开, 或者对端的etcd进程down,导致本端etcd连接断开。排查网络原因或对端的etcd进程是否重启,网络原因可能是网络断开,网卡故障,也有可能是虚拟机故障。grpc: Server.processUnaryRPC failed to write status: connection error: desc = "transport is closing"rafthttp: lost the TCP streaming connection with peer c797ab3a61e2ea55 (stream MsgApp v2 reader)etcdserver: failed to reach the peerURL(https:// X.X.X.X:X) of member c797ab3a61e2ea55 (Get "https://X.X.X.X:X/version": dial tcp X.X.X.X:X: i/o timeout)rafthttp: health check for peer c797ab3a61e2ea55 could not connect: dial tcp X.X.X.X:X: i/o timeout (prober "ROUND_TRIPPER_RAFT_MESSAGE")处理步骤处理步骤同上,已说明。负载过重导致ETCD服务异常警告问题现象管控面上报etcd服务异常告警, 磁盘IO/CPU/内存 很高.问题分析及界定进入Ruby用户cd $GAUSSLOG/cm/etcd查看对应时间点的etcd_xxx.log日志,告警时间点有如下日志,说明etcd节点负载过重, 磁盘IO、CPU等压力大。2021-04-09 10:57:40.112936 W | wal: sync duration of 2.00201804s, expected less than 1s ===通常这个表示磁盘IO压力大。2021-04-09 10:57:40.112993 W | etcdserver: failed to send out heartbeat on time (exceeded the 1s timeout for 2.124414ms, to c8eccd97bed22939)2021-04-09 10:57:40.112999 W | etcdserver: server is likely overloaded2021-04-09 10:57:43.126444 W | etcdserver: read-only range request "key:\"/Ruby/ignoreNodeNumKey\" " with result "error:context canceled" took too long (1.999877971s) to executecd $GAUSSLOG/cm/cm_agent搜索对应时间点的cm_agent-xxx.log, 如果有如下日志,表示当时磁盘io比较高, io util 100 表示磁盘io 达到100%2021-04-09 11:06:24.047 tid=15822 LOG: device vdb1, tot_ticks 889640579, cputime 1798651342, io util 100处理步骤1、在管控面查看该节点当时磁盘IO、CPU、内存监控指标是否很高,示例1:数据盘写延时在16:00左右升高,影响etcd状态。示例2: etcd故障时刻,cpu、内存、磁盘写延时都有增长,尤其是磁盘写延时很明显,需要分析磁盘写延时升高的原因。2、如果故障现场还在: iostat -mx 1 查看磁盘IO状态,top和free命令查看cpu、内存使用情况, 分析磁盘IO高、CPU高,内存高的原因。3、root用户查看该节点的系统日志, cd /var/log, 查看该时间点message日志是否有异常记录。例如:节点内存耗尽了,分析占用内存的原因,是否内存泄漏等。如果仍无法确认原因,联系华为工程师。etcd进程故障导致ETCD服务异常告警问题现象etcd进程down、重启,管控面上报etcd服务异常告警问题分析及界定登陆故障etcd节点, 进入Ruby用户,执行命令ps ux | grep etcd, 查看etcd进程是否在运行。如果进程在,查看etcd进程启动时间,告警时是否重启过,联系华为工程师确认重启原因。如果进程不在,查看etcd无法启动原因:(1)cd $GAUSSLOG/bin, 查看目录下是否有cluster_manual_start 和 etcd_manual_start 两个文件,如果有表示集群被停止,确认停止集群的原因,之后启动集群,定位结束。(2)cd $GAUSSHOME/bin 查看目录下是否存在etcd这个文件,文件权限是否正确,确认文件不存在或权限不正确的原因。(3)检查etcd的数据目录所在磁盘是否满了或者故障,etcd目录如下:cm_ctl query -Cvipd查看检查etcd的数据目录所在磁盘是否满了或者目录权限不正确(正确是700)或者故障,如果磁盘满,检查占用磁盘的文件并清除或者转存到其他盘,如果是etcd本身的文件占满,联系华为工程师分析原因。如果目录权限不正确,修改为正确的目录权限。如果是磁盘故障,联系IaaS技术支持分析定位。处理步骤参照上述处理,如果不是以上原因,请联系华为工程师OM接口无法正确返回结果导致ETCD服务异常告警问题现象管控面上报etcd服务异常告警, 管控无法获取集群状态问题分析及界定查看管控面是否获取集群状态成功,是否获取空消息,联系华为工程师分析定位。cd $GAUSSLOG/om/查看gs_om-xxx.log,是否有如下异常日志例如: The status file does not exist. Path: /usr/local/temp/local_status_1611355718.58.dat.处理步骤参照上面描述步骤。
-
只读原因当CN和DN的磁盘使用率达到阈值时,集群管理就会自动将相应的CN或DN分片设为只读(业务只能读不能写),执行cm_ctl query -Cv命令查询集群状态如下: 设置为只读后禁止业务继续写入,避免磁盘被撑爆,同时也避免后续无法扩容(扩容需要磁盘有一定的剩余空间)。只读guc参数datastorage_threshold_value_check磁盘使用率阈值,超过该阈值,就会被设置为只读,默认85%enable_transaction_read_only 检测磁盘只读的开关,如果关闭,不再检测磁盘,即使磁盘使用率超过阈值也不会设置只读,磁盘清空后也不会消除只读,默认值为on。datastorage_threshold_check_interval 检测磁盘使用率的时间间隔,多久检测一次磁盘使用率,默认为10秒。3个参数都在CMserver数据目录下的cm_server.conf配置文件中。处理措施当CN或DN被设置为只读时,根据上图中查到的CN或DN目录,检查所在磁盘使用率是否超过阈值。1、检查对应磁盘被什么文件占用,确认文件用途,是否可以清理或转移到其他磁盘。2、可以调高磁盘使用率阈值。可以通过如下命令修改CMserver的guc参数,支持reload修改参数,无需重启CMserver进程。确认集群是否有扩容计划,若有后续扩容计划,datastorage_threshold_value_check值建议不要超过50,扩容要求,数据磁盘使用率不超过50%。gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 85"gs_guc reload -Z cmserver -N all -I all -c "enable_transaction_read_only = on"当磁盘使用率超阈值时,集群管理会自动把CN、DN设置为只读,对应的guc参数default_transaction_read_only被设置为on。当磁盘使用率降到阈值以下或者调高阈值后,集群管理会自动把CN、DN解除只读,对应的guc参数default_transaction_read_only被设置为off。由于集群管理默认检测磁盘的周期是10s秒,所以磁盘超阈值或者降到阈值以下,或者通过gs_guc调整阈值,CN、DN的只读状态可能最长会延迟600秒才变化,请耐心等待。如果想马上去掉只读限制,除了清理磁盘或调整阈值外,手动设置对应的CN、DN的guc参数。DN、CN设置只读和取消只读参数:gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置DN只读gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消DN只读gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置CN只读gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消CN只读
上滑加载中
推荐直播
-
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中
热门标签