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

查看OB执行计划

Jellybean 2024-03-13
1122


目标:

1.使用benmarkSQL运行tpc-c,并发数不用很高,5-10并发即可

2.分析tpc-c top sql,并查看3条sql的解析执行计划和实际执行计划

3.对其中一条查询sql创建索引并查看解释执行计划和实际执行计划变更情况

一、服务器规划:

角色

机器

备注

规格

Obd、Obproxy、Obclient

192.168.10.101

中控机,访问反向代理、

命令行客户端

8C4G centos7.2

Observer

192.168.10.102

Oceanbase数据库 zone1

8C 12G

centos7.2

Observer

192.168.10.103

Oceanbase数据库 zone2

8C 12G

centos7.2

Observer

192.168.10.104

Oceanbase数据库 zone3

8C 12G

centos7.2


二、使用benmarkSQL运行tpc-c

TPC-C是一个对OLTP(联机交易处理)系统进行测试的规范。

1.下载benchmarkSQL

地址: https://github.com/obpilot/benchmarksql-5.0.git

[root@obproxy ~]# unzip benchmarksql-5.0-master.zip

[root@obproxy ~]# cd benchmarksql-5.0-master/

2.配置benchmarksql

[root@obproxy ~]# vim benchmarksql-5.0-master/run/props.ob

db=oracle

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

conn=jdbc:oceanbase://127.1:2883/oadb?useUnicode=true&characterEncoding=utf-8

user=root@myoadb#myob

password=

 

3.创建数据库表

#登录到租户myoadb

[root@obproxy ~]# obclient -h192.168.10.101 -uroot@myoadb#myob -P2883 -p -c -A oceanbase

 

#避免大事务超时,设置以下租户全局变量

set global ob_timestamp_service='GTS';

set global autocommit=ON;

set global ob_query_timeout=36000000000;

set global ob_trx_timeout=36000000000;

set global max_allowed_packet=67108864;

set global ob_sql_work_area_percentage=100;

set global parallel_servers_target=800;

 

#运行建表脚本

 [root@obproxy run]# sh runSQL.sh props.ob sql.common/tableCreates.sql

runSQL.sh: line 14: source: funcs.sh: file not found

 

注:提示找不到funcs.sh文件,将funcs.sh设为绝对路径:

[root@obproxy run]# vim runSQL.sh

#!/usr/bin/env bash

 source /root/benchmarksql-5.0-master/run/funcs.sh $1

 

#运行建表脚本

[root@obproxy run]# sh runSQL.sh props.ob sql.common/tableCreates.sql


#查看创建的表

obclient [oadb]> show tables;

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

| Tables_in_oadb   |

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

| bmsql_config     |

| bmsql_customer   |

| bmsql_district   |

| bmsql_history    |

| bmsql_item       |

| bmsql_new_order  |

| bmsql_oorder     |

| bmsql_order_line |

| bmsql_stock      |

| bmsql_warehouse  |

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

10 rows in set (0.012 sec)



4.加载测试数据和创建索引

[root@obproxy run]# vim runLoader.sh

source /root/benchmarksql-5.0-master/run/funcs.sh $1

 

[root@obproxy run]# sh runLoader.sh props.ob

[root@obproxy run]# sh runLoader.sh props.ob

Starting BenchmarkSQL LoadData

 

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

conn=jdbc:oceanbase://127.0.0.1:2883/oadb?useUnicode=true&characterEncoding=utf-8

user=root@myoadb#myob

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

 

#登录到数据库,创建两个索引

[root@obproxy run]# obclient -h192.168.10.101 -uroot@myoadb#myob -P2883 -p -c -A oadb

obclient [oadb]> show tables;

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

| Tables_in_oadb   |

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

| bmsql_config     |

| bmsql_customer   |

| bmsql_district   |

| bmsql_history    |

| bmsql_item       |

| bmsql_new_order  |

| bmsql_oorder     |

| bmsql_order_line |

| bmsql_stock      |

| bmsql_warehouse  |

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

10 rows in set (0.004 sec)

 

obclient [oadb]> create index bmsql_customer_idx1 on  bmsql_customer (c_w_id, c_d_id, c_last, c_first) local;

obclient [oadb]> create index bmsql_oorder_idx1  on  bmsql_oorder (o_w_id, o_d_id, o_carrier_id, o_id) local;

 

5.运行TPC-C测试

 

#测试前发起一次集群合并,以root登录到sys租户执行:

 

[root@obproxy run]# obclient -h192.168.10.101 -uroot@sys#myob -P2883 -p -c -A oceanbase

 

obclient [oceanbase]> alter system major freeze;

 

#运行TPCC测试

[root@obproxy run]# vim runBenchmark.sh

source /root/benchmarksql-5.0-master/run/funcs.sh $1

 

[root@obproxy run]# sh runBenchmark.sh props.ob


三、查看执行计划

1.查询top sql

#登录系统租户查询:

[root@obproxy run]# obclient -h192.168.10.101 -uroot@sys#myob -P2883 -p -c -A oceanbase

 

#找出3条执行时间最长的SQL



#查看第一条SQL执行计划

obclient [oceanbase]> select query_sql from oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT where sql_id='6655242CB5E5EE109296FC00EA9AB1D6';


 

#查看第二条执行计划

obclient [oceanbase]> select query_sql from oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT where sql_id='E34528D6A44F5E88EDC786ED0F6810D3';



#查看第三条执行计划

obclient [oceanbase]> select query_sql from oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT where sql_id='D6277E097ACB6F2AE5B11428AFF82622 ';



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

评论