建议时区调整好 重新做合并 看着show trace发过来的数据 是有问题 看着是语句执行打开关闭 陷入循环了 或者不用容器环境 自己单机搭建一个 看看是否还有问题
我还有个疑问 : 这个trace日志里面 有大量的这个操作 ,如果 3000多行的话 ,有可能 把所有的表或者视图 检查了一遍schema 。 会有 这样控制的参数不 ??
我记的 mysql 社区版有的操作,会自动触发 检测 ddl 的。
不知道咱们的ob是否有这样的机制。
自动触发检测 我记得mysql是information_schema是一个“in-memory”的数据库 他应该是log里读取数据并且创建表的和隔离级别有关系 可以使用ANALYZE TABLE 表名; 这样手动刷新吧
为什么 求回答
没看懂你发的内容
select count() from test2;
这个语法都过不去呀。
how create table __all_virtual_information_columns的查询结果:
CREATE TABLE `__ALL_VIRTUAL_INFORMATION_COLUMNS` (
`TABLE_SCHEMA` varchar(128) NOT NULL,
`TABLE_NAME` varchar(256) NOT NULL,
`TABLE_CATALOG` varchar(4096) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(128) NOT NULL DEFAULT '',
`ORDINAL_POSITION` bigint(20) unsigned NOT NULL DEFAULT '0',
`COLUMN_DEFAULT` longtext DEFAULT NULL,
`IS_NULLABLE` varchar(4) NOT NULL DEFAULT '',
`DATA_TYPE` longtext NOT NULL DEFAULT '',
`CHARACTER_MAXIMUM_LENGTH` bigint(20) unsigned DEFAULT NULL,
`CHARACTER_OCTET_LENGTH` bigint(20) unsigned DEFAULT NULL,
`NUMERIC_PRECISION` bigint(20) unsigned DEFAULT NULL,
`NUMERIC_SCALE` bigint(20) unsigned DEFAULT NULL,
`DATETIME_PRECISION` bigint(20) unsigned DEFAULT NULL,
`CHARACTER_SET_NAME` varchar(128) DEFAULT NULL,
`COLLATION_NAME` varchar(128) DEFAULT NULL,
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
`EXTRA` varchar(4096) NOT NULL DEFAULT '',
`PRIVILEGES` varchar(200) NOT NULL DEFAULT '',
`COLUMN_COMMENT` longtext NOT NULL DEFAULT '',
`GENERATION_EXPRESSION` longtext NOT NULL DEFAULT '',
PRIMARY KEY (`TABLE_SCHEMA`, `TABLE_NAME`)
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10
按照步骤来 那是个举例 哎 你的语句哪个有问题 可以按照案例的步骤来
按照上面的步骤 信息提供一下
我好奇试了下,发现我也有这个问题,用普通租户执行的。但是,和你的又不一样。我只有第一次执行会很慢,20s+,后面再怎么执行都很快了。
select 1 from Information_schema.columns limit 0,1
os : ubuntu 24.04
ce : 4.3.5.1
enable_sql_audit = true
select * from GV$OB_PLAN_CACHE_PLAN_EXPLAIN的结果:
[root@x.x.x.x ~]$ grep “YB420BA1CC68-000615A0A8EA6511-0-0” rootservice.log
[root@x.x.x.x ~]$ grep “YB420BA1CC68-000615A0A8EA6511-0-0” observer.log
换成我自己的TRACE_ID查不到数据
查询的信息 保存在文本里 可以都收集一下么?按照步骤
要在同一个会话下执行
重新搭建了一个单节点OBServer,复现还是相同情况,下面是复现的步骤和trace日志
YB427F000001-000632F610B331C6-0-0.log (2.0 MB)
复现完整记录.txt (33.8 KB)
建议你重新开个帖子 方便跟踪
内部没有复现出来 你的环境方便远程看看么?
我们也遇到了4.3这问题,4.2版本就正常能走table_schema,table_name索引
oceanbase mysql租户表数量超过20000张时查询information_schema.columns视图很慢,执行计划走了全表扫描 - 社区问答- OceanBase社区-分布式数据库
该问题和研发那边确认了,符合当前的预期,是已知问题,后期会优化。如果要在ob4351版本上走到pk,可以在创建租户的时候将 lower_case_table_names 变量设置为1,但是这个变量在租户创建好后就不能修改了。ob425bp1上查询应该没有问题
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016015
lower_case_table_names 参数默认是1,看上去参数配置没效果。 感谢解答,影响面不大,等一波研发修复后的版本做验证了
系统视图元数据量过大
Information_schema.columns 是系统视图,存储所有表的列元数据。如果数据库中存在大量表或列(如数万张表、数百万列),查询该视图会触发全量元数据扫描,导致延迟
部分数据库(如MySQL)的 Information_schema 视图基于实时元数据生成,每次查询需动态计算,而非预存储静态数据
数据量大慢是可以理解的,实际上面测试场景数据量不大的,只有内部表基础数据,总数据量就1w条左右,用limit 1就数据量更少了。 慢的原因应该不是和数据量有关。 我猜测是基表查询是真是的表数据,用户租户查询的是视图或加工后的数据,中间处理逻辑导致走不到索引或部分操作导致索引失效了。
可以