From 8ef8532c4bae9b0b1b6d20c9a0605a3c781ac26b Mon Sep 17 00:00:00 2001 From: gaishun Date: Wed, 11 Dec 2024 13:45:31 +0000 Subject: [PATCH] Update DiskView Sql: Aggregate Lob_table_size with data_table_size --- .../ob_inner_table_schema.21551_21600.cpp | 4 +- .../ob_inner_table_schema.28201_28250.cpp | 2 +- .../inner_table/ob_inner_table_schema_def.py | 122 ++++++++++++------ .../r/mysql/desc_sys_views_in_mysql.result | 2 +- .../r/mysql/desc_sys_views_in_sys.result | 8 +- 5 files changed, 92 insertions(+), 46 deletions(-) diff --git a/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp b/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp index eebeb3e86..ab2092147 100644 --- a/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp +++ b/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp @@ -2253,7 +2253,7 @@ int ObInnerTableSchema::dba_ob_table_space_usage_schema(ObTableSchema &table_sch table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); if (OB_SUCC(ret)) { - if (OB_FAIL(table_schema.set_view_definition(R"__( select attl.table_id as TABLE_ID, ad.database_name as DATABASE_NAME, at.table_name as TABLE_NAME, sum(avtps.occupy_size) as OCCUPY_SIZE, sum(avtps.required_size) as REQUIRED_SIZE from oceanbase.__all_virtual_tablet_pointer_status avtps INNER JOIN oceanbase.__all_tablet_to_ls attl ON attl.tablet_id = avtps.tablet_id INNER JOIN oceanbase.__all_table at ON at.table_id = attl.table_id and at.table_id > 500000 INNER JOIN oceanbase.__all_database ad ON ad.database_id = at.database_id INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt ON avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 1 group by table_id order by table_id )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( select subquery.TABLE_ID AS TABLE_ID, subquery.DATABASE_NAME AS DATABASE_NAME, at_name.TABLE_NAME AS TABLE_NAME, subquery.OCCUPY_SIZE AS OCCUPY_SIZE, subquery.REQUIRED_SIZE AS REQUIRED_SIZE from ( select CASE WHEN at.table_type in (12, 13) THEN at.data_table_id ELSE at.table_id END as TABLE_ID, ad.database_name as DATABASE_NAME, sum(avtps.occupy_size) as OCCUPY_SIZE, sum(avtps.required_size) as REQUIRED_SIZE from oceanbase.__all_virtual_tablet_pointer_status avtps INNER JOIN oceanbase.__all_tablet_to_ls attl ON attl.tablet_id = avtps.tablet_id INNER JOIN oceanbase.__all_table at ON at.table_id = attl.table_id and at.table_id > 500000 INNER JOIN oceanbase.__all_database ad ON ad.database_id = at.database_id INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt ON avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 1 group by table_id ) as subquery INNER JOIN oceanbase.__all_table at_name ON subquery.TABLE_ID = at_name.table_id order by table_id )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } @@ -2304,7 +2304,7 @@ int ObInnerTableSchema::cdb_ob_table_space_usage_schema(ObTableSchema &table_sch table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); if (OB_SUCC(ret)) { - if (OB_FAIL(table_schema.set_view_definition(R"__( select CASE WHEN atnt.tenant_name LIKE 'META$%' THEN REPLACE(atnt.tenant_name, 'META$', '') ELSE atnt.tenant_id END AS TENANT_ID, avttl.table_id as TABLE_ID, CASE WHEN atnt.tenant_name LIKE 'META$%' THEN (SELECT t.tenant_name FROM oceanbase.__all_tenant t WHERE t.tenant_id = REPLACE(atnt.tenant_name, 'META$', '')) ELSE atnt.tenant_name END AS TENANT_NAME, ad.database_name as DATABASE_NAME, avt.table_name as TABLE_NAME, sum(avtps.occupy_size) as OCCUPY_SIZE, sum(avtps.required_size) as REQUIRED_SIZE from oceanbase.__all_virtual_tablet_pointer_status avtps INNER JOIN oceanbase.__all_virtual_tablet_to_ls avttl ON avttl.tenant_id = avtps.tenant_id AND avttl.tablet_id = avtps.tablet_id INNER JOIN oceanbase.__all_tenant atnt ON atnt.tenant_id = avttl.tenant_id INNER JOIN oceanbase.__all_virtual_table avt ON avt.tenant_id = avttl.tenant_id AND avt.table_id = avttl.table_id INNER JOIN oceanbase.__all_virtual_database ad ON ad.tenant_id = atnt.tenant_id AND ad.database_id = avt.database_id INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt ON avtps.tenant_id = avlmt.tenant_id AND avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 1 group by tenant_id, table_id order by tenant_id, table_id )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( select subquery.TENANT_ID AS TENANT_ID, subquery.TABLE_ID AS TABLE_ID, subquery.TENANT_NAME AS TENANT_NAME, subquery.DATABASE_NAME AS DATABASE_NAME, avt_name.TABLE_NAME AS TABLE_NAME, subquery.OCCUPY_SIZE AS OCCUPY_SIZE, subquery.REQUIRED_SIZE AS REQUIRED_SIZE from (select CASE WHEN atnt.tenant_name LIKE 'META$%' THEN REPLACE(atnt.tenant_name, 'META$', '') ELSE atnt.tenant_id END AS TENANT_ID, CASE WHEN avt.table_type in (12, 13) THEN avt.data_table_id ELSE avt.table_id END as TABLE_ID, CASE WHEN atnt.tenant_name LIKE 'META$%' THEN (SELECT t.tenant_name FROM oceanbase.__all_tenant t WHERE t.tenant_id = REPLACE(atnt.tenant_name, 'META$', '')) ELSE atnt.tenant_name END AS TENANT_NAME, ad.database_name as DATABASE_NAME, sum(avtps.occupy_size) as OCCUPY_SIZE, sum(avtps.required_size) as REQUIRED_SIZE from oceanbase.__all_virtual_tablet_pointer_status avtps INNER JOIN oceanbase.__all_virtual_tablet_to_ls avttl ON avttl.tenant_id = avtps.tenant_id AND avttl.tablet_id = avtps.tablet_id INNER JOIN oceanbase.__all_tenant atnt ON atnt.tenant_id = avttl.tenant_id INNER JOIN oceanbase.__all_virtual_table avt ON avt.tenant_id = avttl.tenant_id AND avt.table_id = avttl.table_id INNER JOIN oceanbase.__all_virtual_database ad ON ad.tenant_id = atnt.tenant_id AND ad.database_id = avt.database_id INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt ON avtps.tenant_id = avlmt.tenant_id AND avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 1 group by tenant_id, table_id ) as subquery INNER JOIN oceanbase.__all_virtual_table avt_name ON subquery.TENANT_ID = avt_name.tenant_id AND subquery.TABLE_ID = avt_name.table_id order by tenant_id, table_id )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp b/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp index 457147243..022b35d5f 100644 --- a/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp +++ b/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp @@ -1794,7 +1794,7 @@ int ObInnerTableSchema::dba_ob_table_space_usage_ora_schema(ObTableSchema &table table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); if (OB_SUCC(ret)) { - if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT attl.table_id AS TABLE_ID, ad.database_name AS DATABASE_NAME, atrg.table_name AS TABLE_NAME, SUM(avtps.occupy_size) AS OCCUPY_SIZE, SUM(avtps.required_size) AS REQUIRED_SIZE FROM SYS.ALL_VIRTUAL_TABLET_POINTER_STATUS avtps JOIN SYS.DBA_OB_TABLE_LOCATIONS attl ON attl.tablet_id = avtps.tablet_id JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg ON atrg.table_id = attl.table_id AND atrg.table_id > 500000 JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT ad ON ad.database_id = atrg.database_id JOIN SYS.DBA_OB_LS_LOCATIONS avlmt ON avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 'LEADER' GROUP BY attl.table_id, ad.database_name, atrg.table_name ORDER BY attl.table_id )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( select subquery.TABLE_ID AS TABLE_ID, subquery.DATABASE_NAME AS DATABASE_NAME, atrg_name.TABLE_NAME AS TABLE_NAME, subquery.OCCUPY_SIZE AS OCCUPY_SIZE, subquery.REQUIRED_SIZE AS REQUIRED_SIZE from ( SELECT CASE WHEN (atrg.table_type IN (12, 13)) THEN atrg.data_table_id ELSE atrg.table_id END AS TABLE_ID, ad.database_name AS DATABASE_NAME, SUM(avtps.occupy_size) AS OCCUPY_SIZE, SUM(avtps.required_size) AS REQUIRED_SIZE FROM SYS.ALL_VIRTUAL_TABLET_POINTER_STATUS avtps JOIN SYS.DBA_OB_TABLE_LOCATIONS attl ON attl.tablet_id = avtps.tablet_id JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg ON atrg.table_id = attl.table_id AND atrg.table_id > 500000 JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT ad ON ad.database_id = atrg.database_id JOIN SYS.DBA_OB_LS_LOCATIONS avlmt ON avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 'LEADER' GROUP BY CASE WHEN (atrg.table_type IN (12, 13)) THEN atrg.data_table_id ELSE atrg.table_id END, ad.database_name ) subquery JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg_name ON subquery.TABLE_ID = atrg_name.table_id ORDER BY TABLE_ID )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index a5780dd9a..fe6fa94cf 100755 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -39158,26 +39158,39 @@ def_table_schema( in_tenant_space = True, view_definition = """ select - attl.table_id as TABLE_ID, - ad.database_name as DATABASE_NAME, - at.table_name as TABLE_NAME, - sum(avtps.occupy_size) as OCCUPY_SIZE, - sum(avtps.required_size) as REQUIRED_SIZE + subquery.TABLE_ID AS TABLE_ID, + subquery.DATABASE_NAME AS DATABASE_NAME, + at_name.TABLE_NAME AS TABLE_NAME, + subquery.OCCUPY_SIZE AS OCCUPY_SIZE, + subquery.REQUIRED_SIZE AS REQUIRED_SIZE from - oceanbase.__all_virtual_tablet_pointer_status avtps - INNER JOIN oceanbase.__all_tablet_to_ls attl - ON attl.tablet_id = avtps.tablet_id - INNER JOIN oceanbase.__all_table at - ON at.table_id = attl.table_id - and at.table_id > 500000 - INNER JOIN oceanbase.__all_database ad - ON ad.database_id = at.database_id - INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt - ON avtps.ls_id = avlmt.ls_id - AND avtps.svr_ip = avlmt.svr_ip - AND avtps.svr_port = avlmt.svr_port - AND avlmt.role = 1 - group by table_id + ( + select + CASE + WHEN at.table_type in (12, 13) THEN at.data_table_id + ELSE at.table_id + END as TABLE_ID, + ad.database_name as DATABASE_NAME, + sum(avtps.occupy_size) as OCCUPY_SIZE, + sum(avtps.required_size) as REQUIRED_SIZE + from + oceanbase.__all_virtual_tablet_pointer_status avtps + INNER JOIN oceanbase.__all_tablet_to_ls attl + ON attl.tablet_id = avtps.tablet_id + INNER JOIN oceanbase.__all_table at + ON at.table_id = attl.table_id + and at.table_id > 500000 + INNER JOIN oceanbase.__all_database ad + ON ad.database_id = at.database_id + INNER JOIN oceanbase.__all_virtual_ls_meta_table avlmt + ON avtps.ls_id = avlmt.ls_id + AND avtps.svr_ip = avlmt.svr_ip + AND avtps.svr_port = avlmt.svr_port + AND avlmt.role = 1 + group by table_id + ) as subquery + INNER JOIN oceanbase.__all_table at_name + ON subquery.TABLE_ID = at_name.table_id order by table_id """.replace("\n", " ") ) @@ -39192,11 +39205,23 @@ def_table_schema( gm_columns = [], view_definition = """ select + subquery.TENANT_ID AS TENANT_ID, + subquery.TABLE_ID AS TABLE_ID, + subquery.TENANT_NAME AS TENANT_NAME, + subquery.DATABASE_NAME AS DATABASE_NAME, + avt_name.TABLE_NAME AS TABLE_NAME, + subquery.OCCUPY_SIZE AS OCCUPY_SIZE, + subquery.REQUIRED_SIZE AS REQUIRED_SIZE + from + (select CASE WHEN atnt.tenant_name LIKE 'META$%' THEN REPLACE(atnt.tenant_name, 'META$', '') ELSE atnt.tenant_id END AS TENANT_ID, - avttl.table_id as TABLE_ID, + CASE + WHEN avt.table_type in (12, 13) THEN avt.data_table_id + ELSE avt.table_id + END as TABLE_ID, CASE WHEN atnt.tenant_name LIKE 'META$%' THEN (SELECT t.tenant_name @@ -39205,7 +39230,6 @@ def_table_schema( ELSE atnt.tenant_name END AS TENANT_NAME, ad.database_name as DATABASE_NAME, - avt.table_name as TABLE_NAME, sum(avtps.occupy_size) as OCCUPY_SIZE, sum(avtps.required_size) as REQUIRED_SIZE from @@ -39228,6 +39252,10 @@ def_table_schema( AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 1 group by tenant_id, table_id + ) as subquery + INNER JOIN oceanbase.__all_virtual_table avt_name + ON subquery.TENANT_ID = avt_name.tenant_id + AND subquery.TABLE_ID = avt_name.table_id order by tenant_id, table_id """.replace("\n", " ") ) @@ -69287,27 +69315,45 @@ def_table_schema( gm_columns = [], in_tenant_space = True, view_definition = """ - SELECT - attl.table_id AS TABLE_ID, - ad.database_name AS DATABASE_NAME, - atrg.table_name AS TABLE_NAME, - SUM(avtps.occupy_size) AS OCCUPY_SIZE, - SUM(avtps.required_size) AS REQUIRED_SIZE - FROM SYS.ALL_VIRTUAL_TABLET_POINTER_STATUS avtps - JOIN SYS.DBA_OB_TABLE_LOCATIONS attl - ON attl.tablet_id = avtps.tablet_id - JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg - ON atrg.table_id = attl.table_id + select + subquery.TABLE_ID AS TABLE_ID, + subquery.DATABASE_NAME AS DATABASE_NAME, + atrg_name.TABLE_NAME AS TABLE_NAME, + subquery.OCCUPY_SIZE AS OCCUPY_SIZE, + subquery.REQUIRED_SIZE AS REQUIRED_SIZE + from + ( + SELECT + CASE + WHEN (atrg.table_type IN (12, 13)) THEN atrg.data_table_id + ELSE atrg.table_id + END AS TABLE_ID, + ad.database_name AS DATABASE_NAME, + SUM(avtps.occupy_size) AS OCCUPY_SIZE, + SUM(avtps.required_size) AS REQUIRED_SIZE + FROM SYS.ALL_VIRTUAL_TABLET_POINTER_STATUS avtps + JOIN SYS.DBA_OB_TABLE_LOCATIONS attl + ON attl.tablet_id = avtps.tablet_id + JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg + ON atrg.table_id = attl.table_id AND atrg.table_id > 500000 - JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT ad - ON ad.database_id = atrg.database_id - JOIN SYS.DBA_OB_LS_LOCATIONS avlmt - ON avtps.ls_id = avlmt.ls_id + JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT ad + ON ad.database_id = atrg.database_id + JOIN SYS.DBA_OB_LS_LOCATIONS avlmt + ON avtps.ls_id = avlmt.ls_id AND avtps.svr_ip = avlmt.svr_ip AND avtps.svr_port = avlmt.svr_port AND avlmt.role = 'LEADER' - GROUP BY attl.table_id, ad.database_name, atrg.table_name - ORDER BY attl.table_id + GROUP BY + CASE + WHEN (atrg.table_type IN (12, 13)) THEN atrg.data_table_id + ELSE atrg.table_id + END, + ad.database_name + ) subquery + JOIN SYS.ALL_VIRTUAL_TABLE_REAL_AGENT atrg_name + ON subquery.TABLE_ID = atrg_name.table_id + ORDER BY TABLE_ID """.replace("\n", " ") ) diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result index 835e74887..726531d9f 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result @@ -7507,7 +7507,7 @@ cnt 1 desc oceanbase.DBA_OB_TABLE_SPACE_USAGE; Field Type Null Key Default Extra -TABLE_ID bigint(20) NO NULL +TABLE_ID bigint(20) NO DATABASE_NAME varchar(128) NO TABLE_NAME varchar(256) NO OCCUPY_SIZE decimal(42,0) NO diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result index b9ab221cf..3aff4decb 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result @@ -10602,7 +10602,7 @@ cnt 1 desc oceanbase.DBA_OB_TABLE_SPACE_USAGE; Field Type Null Key Default Extra -TABLE_ID bigint(20) NO NULL +TABLE_ID bigint(20) NO DATABASE_NAME varchar(128) NO TABLE_NAME varchar(256) NO OCCUPY_SIZE decimal(42,0) NO @@ -10612,9 +10612,9 @@ cnt 1 desc oceanbase.CDB_OB_TABLE_SPACE_USAGE; Field Type Null Key Default Extra -TENANT_ID varchar(128) NO NULL -TABLE_ID bigint(20) NO NULL -TENANT_NAME varchar(128) NO NULL +TENANT_ID varchar(128) NO +TABLE_ID bigint(20) NO +TENANT_NAME varchar(128) NO DATABASE_NAME varchar(128) NO TABLE_NAME varchar(256) NO OCCUPY_SIZE decimal(42,0) NO