暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

使用BenmarkSQL运行TPC-C,并查看3条SQL的解析和实际执行计划

原创 angel 2022-04-17
2871

简介:通过使用BenmarkSQL运行TPC-C,并查看OceanBase 的执行计划及查看方法,包括 explain 命令和查看实际执行计划。

 

 

一、准备工作:

1.机器配置:

⑴ 硬件:4核CPU,32G内存,500G硬盘容量,网卡型号: wlp1s0

⑵软件:IP地址: 192.168.43.196,软件版本:CentOS Linux release 7.9.2009 (Core)

⑶ 准备服务器:

角色

机器

备注

observer

obclient

192.168.43.196

zone1, 监听2881和2883端口

obproxy

192.168.43.196

监听2883和2884端口

 

①启动OB:

[admin@dell angel ~]$ cd /home/admin/oceanbase && bin/observer -i wlp1s0 -p 2881 -P 2882 -z zone1 -d /home/admin/oceanbase/store -r '192.168.43.196:2882:2881' -c 20220221 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K"

 

②obproxy

cd ~/obproxy-3.2.0 && bin/obproxy -r "192.168.43.196:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo

 

③集群

obclient -h 192.168.43.196 -u root@sys#obdemo -P 2883 -p123 -c -A oceanbase

show databases;

select * from __all_tenant;

drop tenant  lxs_tpcc_tenant1 force;

select * from __all_resource_pool;

drop  resource  pool lxs_tpcc_pool_test;

select * from __all_unit_config;

drop  resource unit lxs_unit1;

 

④创建资源单元:

create resource unit lxs_tpcc_unit6_2_2 max_cpu=2, max_memory='2g', max_iops=10000, max_disk_size='10g', max_session_num=1000000, min_cpu=2, min_memory='2g', min_iops=1000;

 

⑤创建资源池:

create resource pool lxs_tpcc_pool_test unit = 'lxs_tpcc_unit6_2_2', unit_num = 1;

⑥创建业务租户:

create tenant lxs_tpcc_tenant1 resource_pool_list=('lxs_tpcc_pool_test');

select * from __all_tenant;

exit

obclient -uroot@lxs_tpcc_tenant1 -h 192.168.43.196 -P2883 -p123 –Doceanbase

⑦没有设置白名单无法进入


obclient -h 192.168.43.196 -u root@sys#obdemo -P 2883 -p123 -c -A oceanbase

白名单:ALTER TENANT lxs_tpcc_tenant1 SET VARIABLES ob_tcp_invited_nodes='%';

不能带密码:ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)

alter user root identified by '123'

exit

 

⑧修改权限

 

MySQL [oceanbase]> show global variables like '%timeout%';

+---------------------+------------------+

| Variable_name       | Value            |

+---------------------+------------------+

| connect_timeout     | 10               |

| interactive_timeout | 28800            |

| lock_wait_timeout   | 31536000         |

| net_read_timeout    | 30               |

| net_write_timeout   | 60               |

| ob_pl_block_timeout | 3216672000000000 |

| ob_query_timeout    | 10000000         |

| ob_trx_idle_timeout | 120000000        |

| ob_trx_lock_timeout | -1               |

| ob_trx_timeout      | 100000000        |

| wait_timeout        | 28800            |

+---------------------+------------------+

11 rows in set (0.010 sec)

 

MySQL [oceanbase]> grant all privileges on lxs_tpcc_tenant1 to tpcc ;

 

create database lxs_tpcc_db;

use lxs_tpcc_db;

修改会话超时时间:

set global ob_query_timeout=36000000000;

set global ob_trx_timeout=36000000000;


2. 软件下载:

⑴ 下载测试软件:

git clone https://github.com/obpilot/benchmarksql-5.0.git

⑵benchmarksql的目录树:


⑶配置文件 props.ob 在 run 目录下:

sudo vim /home/admin/benchmarksql-5.0/run/props.ob

db=oracle

driver=com.alipay.oceanbase.obproxy.mysql.jdbc.Driver

conn=jdbc:oceanbase://192.168.43.196:2883/lxs_tpcc_db?useUnicode=true&characterEncoding=utf-8

user=root@lxs_tpcc_tenant1

password=123

 

warehouses=2

loadWorkers=2

 

terminals=2

//To run specified transactions per terminal- runMins must equal zero

runTxnsPerTerminal=0

//To run for specified minutes- runTxnsPerTerminal must equal zero

runMins=10

//Number of total transactions per minute

limitTxnsPerMin=0

 

//Set to true to run in 4.x compatible mode. Set to false to use the

//entire configured database evenly.

terminalWarehouseFixed=true

 

//The following five values must add up to 100

newOrderWeight=45

paymentWeight=43

orderStatusWeight=4

deliveryWeight=4

stockLevelWeight=4

 

// Directory name to create for collecting detailed result data.

// Comment this out to suppress.

resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS

osCollectorScript=./misc/os_collector_linux.py

osCollectorInterval=1

~                         

 

3.数据准备建非分区表

sh runSQL.sh /home/admin/benchmarksql-5.0/run/props.ob /home/admin/benchmarksql-5.0/run/sql.common/tableCreates.sql

 

[admin@dell angel run]$ sh runSQL.sh /home/admin/benchmarksql-5.0/run/props.ob /home/admin/benchmarksql-5.0/run/sql.common/tableCreates.sql

# ------------------------------------------------------------

# Loading SQL file /home/admin/benchmarksql-5.0/run/sql.common/tableCreates.sql

# ------------------------------------------------------------

create table bmsql_config (

cfg_name    varchar(30) primary key,

cfg_value   varchar(50)

);

create table bmsql_warehouse (

w_id        integer   not null,

w_ytd       decimal(12,2),

w_tax       decimal(4,4),

w_name      varchar(10),

w_street_1  varchar(20),

w_street_2  varchar(20),

w_city      varchar(20),

w_state     char(2),

w_zip       char(9)

);

create table bmsql_district (

d_w_id       integer       not null,

d_id         integer       not null,

d_ytd        decimal(12,2),

d_tax        decimal(4,4),

d_next_o_id  integer,

d_name       varchar(10),

d_street_1   varchar(20),

d_street_2   varchar(20),

d_city       varchar(20),

d_state      char(2),

d_zip        char(9)

);

create table bmsql_customer (

c_w_id         integer        not null,

c_d_id         integer        not null,

c_id           integer        not null,

c_discount     decimal(4,4),

c_credit       char(2),

c_last         varchar(16),

c_first        varchar(16),

c_credit_lim   decimal(12,2),

c_balance      decimal(12,2),

c_ytd_payment  decimal(12,2),

c_payment_cnt  integer,

c_delivery_cnt integer,

c_street_1     varchar(20),

c_street_2     varchar(20),

c_city         varchar(20),

c_state        char(2),

c_zip          char(9),

c_phone        char(16),

c_since        timestamp,

c_middle       char(2),

c_data         varchar(500)

);

create table bmsql_history (

hist_id  integer,

h_c_id   integer,

h_c_d_id integer,

h_c_w_id integer,

h_d_id   integer,

h_w_id   integer,

h_date   timestamp,

h_amount decimal(6,2),

h_data   varchar(24)

);

create table bmsql_new_order (

no_w_id  integer   not null,

no_d_id  integer   not null,

no_o_id  integer   not null

);

create table bmsql_oorder (

o_w_id       integer      not null,

o_d_id       integer      not null,

o_id         integer      not null,

o_c_id       integer,

o_carrier_id integer,

o_ol_cnt     integer,

o_all_local  integer,

o_entry_d    timestamp

);

create table bmsql_order_line (

ol_w_id         integer   not null,

ol_d_id         integer   not null,

ol_o_id         integer   not null,

ol_number       integer   not null,

ol_i_id         integer   not null,

ol_delivery_d   timestamp,

ol_amount       decimal(6,2),

ol_supply_w_id  integer,

ol_quantity     integer,

ol_dist_info    char(24)

);

create table bmsql_item (

i_id     integer      not null,

i_name   varchar(24),

i_price  decimal(5,2),

i_data   varchar(50),

i_im_id  integer

);

create table bmsql_stock (

s_w_id       integer       not null,

s_i_id       integer       not null,

s_quantity   integer,

s_ytd        integer,

s_order_cnt  integer,

s_remote_cnt integer,

s_data       varchar(50),

s_dist_01    char(24),

s_dist_02    char(24),

s_dist_03    char(24),

s_dist_04    char(24),

s_dist_05    char(24),

s_dist_06    char(24),

s_dist_07    char(24),

s_dist_08    char(24),

s_dist_09    char(24),

s_dist_10    char(24)

);


 


二、开始测试

1.加载数据

 

输出:sh runLoader.sh props.ob

[admin@dell angel run]$ sh runLoader.sh props.ob

Starting BenchmarkSQL LoadData

 

driver=com.alipay.oceanbase.obproxy.mysql.jdbc.Driver

conn=jdbc:oceanbase://192.168.43.196:2883/lxs_tpcc_db?useUnicode=true&characterEncoding=utf-8

user=root@lxs_tpcc_tenant1

password=***********

warehouses=2

loadWorkers=2

fileLocation (not defined)

csvNullValue (not defined - using default 'NULL')

 

Worker 000: Loading ITEM

Worker 001: Loading Warehouse      1

Worker 000: Loading ITEM done

Worker 000: Loading Warehouse      2

Worker 001: Loading Warehouse      1 done

Worker 000: Loading Warehouse      2 done

图:


 

2.当数据初始化完后再补充两个索引。


3.查询数量


 

4.合并转储: alter system major freeze;


图:


合并成功。

 

5.性能测试

[admin@dell angel run]$ sh runBenchmark.sh props.ob

03:54:24,836 [main] INFO   jTPCC : Term-00,

03:54:24,839 [main] INFO   jTPCC : Term-00, +-------------------------------------------------------------+

03:54:24,839 [main] INFO   jTPCC : Term-00,      BenchmarkSQL v5.0

03:54:24,839 [main] INFO   jTPCC : Term-00, +-------------------------------------------------------------+

03:54:24,839 [main] INFO   jTPCC : Term-00,  (c) 2003, Raul Barbosa

03:54:24,839 [main] INFO   jTPCC : Term-00,  (c) 2004-2016, Denis Lussier

03:54:24,841 [main] INFO   jTPCC : Term-00,  (c) 2016, Jan Wieck

03:54:24,841 [main] INFO   jTPCC : Term-00, +-------------------------------------------------------------+

03:54:24,841 [main] INFO   jTPCC : Term-00,

03:54:24,841 [main] INFO   jTPCC : Term-00, db=oracle

03:54:24,841 [main] INFO   jTPCC : Term-00, driver=com.alipay.oceanbase.obproxy.mysql.jdbc.Driver

03:54:24,841 [main] INFO   jTPCC : Term-00, conn=jdbc:oceanbase://192.168.43.196:2883/lxs_tpcc_db?useUnicode=true&characterEncoding=utf-8

03:54:24,842 [main] INFO   jTPCC : Term-00, user=root@lxs_tpcc_tenant1

03:54:24,842 [main] INFO   jTPCC : Term-00,

03:54:24,842 [main] INFO   jTPCC : Term-00, warehouses=2

03:54:24,842 [main] INFO   jTPCC : Term-00, terminals=2

03:54:24,843 [main] INFO   jTPCC : Term-00, runMins=1

03:54:24,843 [main] INFO   jTPCC : Term-00, limitTxnsPerMin=0

03:54:24,844 [main] INFO   jTPCC : Term-00, terminalWarehouseFixed=true

03:54:24,844 [main] INFO   jTPCC : Term-00,

03:54:24,844 [main] INFO   jTPCC : Term-00, newOrderWeight=45

03:54:24,844 [main] INFO   jTPCC : Term-00, paymentWeight=43

03:54:24,844 [main] INFO   jTPCC : Term-00, orderStatusWeight=4

03:54:24,844 [main] INFO   jTPCC : Term-00, deliveryWeight=4

03:54:24,844 [main] INFO   jTPCC : Term-00, stockLevelWeight=4

03:54:24,844 [main] INFO   jTPCC : Term-00,

03:54:24,844 [main] INFO   jTPCC : Term-00, resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS

03:54:24,844 [main] INFO   jTPCC : Term-00, osCollectorScript=./misc/os_collector_linux.py

03:54:24,845 [main] INFO   jTPCC : Term-00,

03:54:24,863 [main] INFO   jTPCC : Term-00, copied props.ob to my_result_2022-04-08_035424/run.properties

03:54:24,863 [main] INFO   jTPCC : Term-00, created my_result_2022-04-08_035424/data/runInfo.csv for runID 7

03:54:24,864 [main] INFO   jTPCC : Term-00, writing per transaction results to my_result_2022-04-08_035424/data/result.csv

03:54:24,864 [main] INFO   jTPCC : Term-00, osCollectorScript=./misc/os_collector_linux.py

03:54:24,864 [main] INFO   jTPCC : Term-00, osCollectorInterval=1

03:54:24,864 [main] INFO   jTPCC : Term-00, osCollectorSSHAddr=null

03:54:24,865 [main] INFO   jTPCC : Term-00, osCollectorDevices=null

03:54:24,972 [main] INFO   jTPCC : Term-00,

03:54:25,238 [main] INFO   jTPCC : Term-00, C value for C_LAST during load: 225

03:54:25,238 [main] INFO   jTPCC : Term-00, C value for C_LAST this run:    144

03:54:25,238 [main] INFO   jTPCC : Term-00,

Term-00, Running Average tpmTOTAL: 15.19    Current tpmTOTAL: 120    Memory Usage: 28MB / 477MB            

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00,

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00,

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00, Measured tpmC (NewOrders) = 7.59

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00, Measured tpmTOTAL = 15.19

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00, Session Start     = 2022-04-08 03:54:25

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00, Session End       = 2022-04-08 03:55:36

03:55:36,365 [Thread-2] INFO   jTPCC : Term-00, Transaction Count = 17

图:1


图:2


6.默认情况下SQL审计是开放的,检查一下参数:

 

MySQL [oceanbase]> show variables like 'ob_enable_sql_audit';

+---------------------+-------+

| Variable_name       | Value |

+---------------------+-------+

| ob_enable_sql_audit | ON    |

+---------------------+-------+

1 row in set (0.006 sec)

 

图:


 

三、 分析 TPC-C TOP SQL,并查看 3条 SQL 的 解析执行计划 和 实际执行计划:

 

1.查询TOP sql

MySQL [oceanbase]> SELECT sql_id, count(*), round(avg(elapsed_time)) avg_elapsed_time, round(avg(execute_time)) avg_exec_time FROM gv$sql_audit s WHERE 1=1 and user_name='root' and request_time >= time_to_usec(DATE_SUB(current_timestamp, INTERVAL 30 MINUTE) ) GROUP BY sql_id order by avg_elapsed_time desc LIMIT 10;

+----------------------------------+----------+------------------+---------------+

| sql_id                           | count(*) | avg_elapsed_time | avg_exec_time |

+----------------------------------+----------+------------------+---------------+

| 647F8699535CD88565AC98AE8632C2C7 |        1 |            40000 |          2186 |

| 44C1DABCE001AB879F8E1F1A0AFF9C0E |        1 |            22716 |         16658 |

| 0FACB6E4E2F378984041D6C0319D8790 |        1 |            19931 |         17349 |

| 10345400457CEB7DA0AAA280D681047B |        1 |            12321 |           136 |

| 751417D45B8E80EE5CBA2034458B5BC9 |        1 |            11557 |           192 |

| 8494BF392DC8D426420EC07B667D36EB |        1 |            10446 |           188 |

| 266B117EC690A3FC1658D2A9F74872FE |        1 |             9639 |           162 |

| 17183830D1A09D6C15DA98EDB2CFD874 |        1 |             8843 |            61 |

| 13E88F58920B0288A6F62FB8E02741C7 |        1 |             8658 |            75 |

| 585B28E5BE91CCE22E8D4656C7A54576 |        1 |             8444 |            88 |

图:


2.获取TOP 3 SQL

 

MySQL [oceanbase]> select distinct query_sql from gv$sql_audit where sql_id in ('647F8699535CD88565AC98AE8632C2C7', '44C1DABCE001AB879F8E1F1A0AFF9C0E', '0FACB6E4E2F378984041D6C0319D8790');

+----------------------------------------+

| query_sql                              |

+----------------------------------------+

| select * from CDB_CKPT_HISTORY where 0 |

| select * from gv$sstable where 0       |

| select * from v$sstable where 0        |

+----------------------------------------+

3 rows in set (0.021 sec)

图:


 

3.分析执行计划1

 

MySQL [oceanbase]> explain  select * from CDB_CKPT_HISTORY where 0;

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Query Plan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| ===========================================================================

|ID|OPERATOR                  |NAME                      |EST. ROWS|COST  |

---------------------------------------------------------------------------

|0 |PX COORDINATOR MERGE SORT |                          |2752     |566698|

|1 | EXCHANGE OUT DISTR       |:EX10000                  |2752     |549570|

|2 |  SORT                    |                          |2752     |549570|

|3 |   PX PARTITION ITERATOR  |                          |2752     |463639|

|4 |    MERGE OUTER JOIN      |                          |2752     |463639|

|5 |     SORT                 |                          |2752     |258284|

|6 |      TABLE SCAN          |__all_server_event_history|2752     |198942|

|7 |     SORT                 |                          |1        |204975|

|8 |      TABLE SCAN          |__all_server_event_history|1        |204971|

===========================================================================

 

Outputs & filters:

-------------------------------------

  0 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.gmt_create]), filter(nil), startup_filter([0]), sort_keys([__all_server_event_history.svr_ip, ASC], [__all_server_event_history.svr_port, ASC], [__all_server_event_history.value1, ASC], [__all_server_event_history.value2, ASC])

  1 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.gmt_create]), filter(nil), dop=1

  2 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.gmt_create]), filter(nil), sort_keys([__all_server_event_history.svr_ip, ASC], [__all_server_event_history.svr_port, ASC], [__all_server_event_history.value1, ASC], [__all_server_event_history.value2, ASC]), local merge sort

  3 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.gmt_create]), filter(nil)

  4 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.gmt_create]), filter(nil),

      equal_conds([__all_server_event_history.svr_ip = __all_server_event_history.svr_ip], [__all_server_event_history.svr_port = __all_server_event_history.svr_port], [__all_server_event_history.value1 = __all_server_event_history.value1], [__all_server_event_history.value2 = __all_server_event_history.value2]), other_conds([__all_server_event_history.event = 'minor merge start' AND __all_server_event_history.event = 'minor merge finish' OR __all_server_event_history.event = 'write checkpoint start' AND __all_server_event_history.event = 'write checkpoint finish'])

  5 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create], [__all_server_event_history.event]), filter(nil), sort_keys([__all_server_event_history.svr_ip, ASC], [__all_server_event_history.svr_port, ASC], [__all_server_event_history.value1, ASC], [__all_server_event_history.value2, ASC])

  6 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.event], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create]), filter(nil),

      access([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.event], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.value3], [__all_server_event_history.value4], [__all_server_event_history.gmt_create]), partitions(p[0-15])

  7 - output([__all_server_event_history.gmt_create], [__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.event = 'minor merge finish'], [__all_server_event_history.event = 'write checkpoint finish']), filter(nil), sort_keys([__all_server_event_history.svr_ip, ASC], [__all_server_event_history.svr_port, ASC], [__all_server_event_history.value1, ASC], [__all_server_event_history.value2, ASC])

  8 - output([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.gmt_create], [__all_server_event_history.event = 'minor merge finish'], [__all_server_event_history.event = 'write checkpoint finish']), filter([cast(__all_server_event_history.value1, DECIMAL(-1, -1)) = ?], [__all_server_event_history.event = 'minor merge finish' OR __all_server_event_history.event = 'write checkpoint finish'], [__all_server_event_history.event = 'minor merge finish' OR __all_server_event_history.event = 'write checkpoint finish']),

      access([__all_server_event_history.svr_ip], [__all_server_event_history.svr_port], [__all_server_event_history.event], [__all_server_event_history.value1], [__all_server_event_history.value2], [__all_server_event_history.gmt_create]), partitions(p[0-15])

 |

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.018 sec)

图:


 

4.分析执行计划2

 

MySQL [oceanbase]> explain  select * from gv$sstable where 0;

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Query Plan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| =======================================================

|ID|OPERATOR                  |NAME|EST. ROWS|COST    |

-------------------------------------------------------

|0 |NESTED-LOOP JOIN CARTESIAN|    |10000000 |10749857|

|1 | TABLE SCAN               |M   |100000   |2000000 |

|2 | MATERIAL                 |    |100      |2313    |

|3 |  TABLE SCAN              |T   |100      |2000    |

=======================================================

 

Outputs & filters:

-------------------------------------

  0 - output([M.svr_ip], [M.svr_port], [M.table_type], [M.table_id], [T.table_name], [T.tenant_id], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), filter(nil), startup_filter([0]),

      conds(nil), nl_params_(nil)

  1 - output([M.svr_ip], [M.svr_port], [M.table_id], [M.table_type], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), filter(nil),

      access([M.svr_ip], [M.svr_port], [M.table_id], [M.table_type], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), partitions(p0)

  2 - output([T.table_name], [T.tenant_id]), filter(nil)

  3 - output([T.tenant_id], [T.table_name]), filter(nil),

      access([T.tenant_id], [T.table_name]), partitions(p0)

 |

+----------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.009 sec)

图:


 

5.分析执行计划3

MySQL [oceanbase]> explain  select * from v$sstable where 0;

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Query Plan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| =======================================================

|ID|OPERATOR                  |NAME|EST. ROWS|COST    |

-------------------------------------------------------

|0 |NESTED-LOOP JOIN CARTESIAN|    |10000000 |10749857|

|1 | TABLE SCAN               |M   |100000   |2000000 |

|2 | MATERIAL                 |    |100      |2313    |

|3 |  TABLE SCAN              |T   |100      |2000    |

=======================================================

 

Outputs & filters:

-------------------------------------

  0 - output([M.table_type], [M.table_id], [T.table_name], [T.tenant_id], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), filter(nil), startup_filter([0]),

      conds(nil), nl_params_(nil)

  1 - output([M.table_id], [M.table_type], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), filter(nil),

      access([M.table_id], [M.table_type], [M.partition_id], [M.index_id], [M.base_version], [M.multi_version_start], [M.snapshot_version], [M.start_log_ts], [M.end_log_ts], [M.max_log_ts], [M.version], [M.logical_data_version], [M.size], [M.is_active], [M.ref], [M.write_ref], [M.trx_count], [M.pending_log_persisting_row_cnt], [M.upper_trans_version], [M.contain_uncommitted_row]), partitions(p0)

  2 - output([T.table_name], [T.tenant_id]), filter(nil)

  3 - output([T.tenant_id], [T.table_name]), filter(nil),

      access([T.tenant_id], [T.table_name]), partitions(p0)

 |

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.012 sec)

图:


 

四、总结:

1.不清楚第二条解释执行计划和第三条是一样的!

2.踩过的坑:执行命令需要绝对路径,需要设置租户权限,审计权限,

 

最后修改时间:2022-04-17 20:14:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论