实践教程之体验PolarDB-X分布式事务和数据分区

简介: PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
+关注继续查看

本期实验将指导您使用PolarDB-X分布式事务和数据分区

本期免费实验地址

本期教学视频地址


前置准备

假设已经根据前一讲内容完成了PolarDB-X的搭建部署,可以成功链接上PolarDB-X数据库。

PolarDB-X:实践教程之如何快速安装部署PolarDB-X


体验PolarDB-X分布式事务

本步骤将带您体验PolarDB-X分布式事务。首先开启一个分布式事务,通过命令观察事务信息。然后模拟一个转账行为,观察原子性和隔离性保证,最后通过Flashback Query查看历史版本。

1.准备测试库、测试表和测试数据。

a. 执行如下SQL语句,创建测试库transfer_test并使用。

CREATE DATABASE transfer_test MODE='AUTO';
 USE transfer_test;

b. 执行如下SQL语句,创建测试表account。

CREATE TABLE account (
   pk bigint not null auto_increment,
   id varchar(64) not null,
   balance double not null,
   gmt_create timestamp default current_timestamp,
   gmt_modified timestamp default current_timestamp on update current_timestamp,
   PRIMARY KEY(pk),
   key(id)
);

c. 执行如下SQL语句,创建测试表user 。

CREATE TABLE user (
   pk bigint not null auto_increment,
   name varchar(64) not null,
   addr varchar(128) not null,
   gmt_create timestamp default current_timestamp,
   gmt_modified timestamp default current_timestamp on update current_timestamp,
   PRIMARY KEY(pk),
   key(name)
);

d. 执行如下SQL语句,初始化数据。

INSERT INTO account(id, balance) VALUES("Alice", 100), ("Bob", 100);
INSERT INTO user(name, addr) VALUES("Alice", "hz"), ("Bob", "sh");

e. 执行如下SQL语句,查看初始化结果。

SHOW FULL CREATE TABLE account;
SHOW FULL CREATE TABLE user;
SELECT * FROM account;
SELECT * FROM user;


2.转账测试。

a. 实验页面,单击右上角的+ 图标,创建新的终端三和终端四。

1.jpg

b. 在终端三和终端四中,分别执行如下命令,连接PolarDB-X集群。

mysql -h127.0.0.1 -P3306 -upolardbx_root transfer_test

c. 按照如下表格中的步骤顺序,在终端三和终端四中分别执行如下SQL语句,进行转账测试。

步骤顺序终端三的命令终端四的命令
1BEGIN;
UPDATE account SET balance = balance - 30 WHERE id = "Alice";
2SELECT * FROM account;SHOW TRANS;
SELECT * FROM account;
3ROLLBACK;
4SELECT * FROM account;SHOW TRANS;
SELECT * FROM account;
5BEGIN;
UPDATE account SET balance = balance - 30 WHERE id = "Alice";
UPDATE account SET balance = balance + 30 WHERE id = "Bob";
6SELECT * FROM account;SELECT * FROM account;
7COMMIT;
8SELECT * FROM account;


3.Flashback Query。

a. 实验页面,单击右上角的+图标,创建新的终端五。

20230412101447.jpg


b. 执行如下命令,连接PolarDB-X集群。

mysql -h127.0.0.1 -P3306 -upolardbx_root transfer_test

c. 执行如下SQL语句,记录当前时间点为ts0。

SELECT NOW();

2.jpg

d. 执行如下SQL语句,更新数据。

BEGIN;
UPDATE account SET balance = balance - 30 WHERE id = "Alice";
UPDATE account SET balance = balance + 30 WHERE id = "Bob";
COMMIT;
INSERT INTO account(id, balance) VALUES("Tom", 100);
INSERT INTO user(name, addr) VALUES("Tom", "bj");

e. 执行如下SQL语句,查看更新后的数据。

SELECT a.id, a.balance, b.addr FROM account a 
JOIN user b ON a.id = b.name;

f. 执行如下SQL语句,指定时间为ts0,查询历史版本数据。

说明 :

  • 您需要将{ts0}替换为实际记录的时间点ts0。
    • 示例:SELECT * FROM user AS OF TIMESTAMP "2022-05-12 10:14:14";
SELECT * FROM user AS OF TIMESTAMP "{ts0}";
SELECT * FROM account AS OF TIMESTAMP "{ts0}";

20230412101604.jpg


g. 执行如下SQL语句,在Join中为部分表指定时间戳。

说明 :您需要将{ts0}替换为实际记录的时间点ts0。

SELECT a.id, a.balance, b.addr FROM account a JOIN user AS OF TIMESTAMP "{ts0}" b ON a.id = b.name;


20230412101623.jpg

h. 执行如下SQL语句,查看并记录当前时间点为ts1。

SELECT NOW();


20230412101651.jpg


i. 执行如下SQL语句,模拟误删操作。

DELETE FROM account WHERE 1=1;

j. 执行如下SQL语句,查看删除结果。

SELECT * FROM account;


20230412101715.jpg

k. 执行如下SQL语句,通过Flashback Query恢复误删的数据。

说明 :您需要将{ts1}替换为实际记录的时间点ts1。

INSERT INTO account SELECT * FROM account AS OF TIMESTAMP "{ts1}";


20230412101742.jpg

l. 执行如下SQL语句,查看恢复结果。

SELECT * FROM account;


20230412101808.jpg


体验PolarDB-X数据分区

本步骤将带您体验PolarDB-X数据分区对查询性能的影响。首先用默认拆分方式创建一张表,然后通过增加全局索引和改变拆分方式来提升查询性能。

1.准备测试库、测试表和测试数据。

a. 切换至终端二,执行如下SQL语句,创建测试库partitioning_test并使用。

CREATE DATABASE partitioning_test MODE='AUTO';  USE partitioning_test;

b. 执行如下SQL语句,创建测试表ptest1。

CREATE TABLE ptest1 (
  id INTEGER UNSIGNED NOT NULL,
  k INTEGER UNSIGNED DEFAULT '0' NOT NULL,
  c CHAR(20) DEFAULT '' NOT NULL,
  pad CHAR(60) DEFAULT '' NOT NULL,
  PRIMARY KEY(id)
);

c. 执行如下SQL语句,插入数据。

INSERT INTO ptest1(id, k, c, pad) VALUES
(1, 1, "c", "pad"),(2, 2, "c", "pad"),(3, 3, "c", "pad"),
(4, 4, "c", "pad"),(5, 5, "c", "pad"),(6, 6, "c", "pad");


2.通过全局索引优化查询性能。

a. 执行如下SQL语句,查看主键上点查的执行计划。

EXPLAIN SELECT pad FROM ptest1 WHERE id = 1;

b. 执行如下SQL语句,查看k字段上点查的执行计划。

EXPLAIN SELECT pad FROM ptest1 WHERE k = 1;

c. 执行如下SQL语句,在k字段上增加索引。

ALTER TABLE `partitioning_test`.`ptest1`  ADD INDEX `__advise_index_ptest1_k`(`k`);

d. 执行如下SQL语句,查看添加索引后的执行计划。

EXPLAIN SELECT pad FROM ptest1 WHERE k = 1;

e. 执行如下SQL语句,在k字段上增加聚簇索引。

ALTER TABLE ptest1 ADD CLUSTERED INDEX c_k(k);

f. 执行如下SQL语句,查看增加聚簇索引后的执行计划。

EXPLAIN SELECT pad FROM ptest1 WHERE k=1;

g. 执行如下SQL语句,查看ptest1表的表结构。

SHOW CREATE TABLE ptest1; 
SHOW FULL CREATE TABLE ptest1;


3.通过变更分区键优化查询性能。

a. 执行如下SQL语句,删除之前创建的索引。

ALTER TABLE ptest1 DROP INDEX c_k;
ALTER TABLE ptest1 DROP INDEX __advise_index_ptest1_k;

b. 执行如下SQL语句,变更拆分键。

ALTER TABLE ptest1 PARTITION BY HASH(k); 
SHOW FULL CREATE TABLE ptest1;

c. 执行如下SQL语句,查看变更拆分键之后的执行计划。

EXPLAIN SELECT pad FROM ptest1 WHERE k=1;


了解更多


本文来源:PolarDB-X知乎号

相关实践学习
如何一键安装部署PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署PolarDB-X。
相关文章
|
16天前
|
存储 关系型数据库 MySQL
PolarDB-X 存储引擎核心技术 | Lizard分布式事务系统
关系型数据库作为支撑企业级数据的在线存储方案,发挥了无可替代的作用。随着海量数据的增长,以及面对创新业务爆发性增长的场景,如何能够快速,业务无损的进行在线数据库扩容,对数据库的架构提出了巨大的挑战,除此以外,企业的精细化经营,也要求数据库能够一站式提供事务处理能力和数据分析能力,为了应对这些挑战,分布式数据库应运而生。
|
2月前
|
SQL Kubernetes 关系型数据库
实践教程之使用 PolarDB-X 的 TTL 表功能
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
|
2月前
|
SQL 存储 分布式数据库
实践教程之PolarDB-X分区管理
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何进行PolarDB-X分区管理。
|
2月前
|
弹性计算 前端开发 关系型数据库
实践教程之使用PolarDB-X进行TP负载测试
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X进行TP负载测试。
|
3月前
|
SQL Kubernetes 关系型数据库
实践教程之如何使用PolarDB-X进行数据导入导出
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X进行数据导入导出。
|
3月前
|
SQL 弹性计算 Kubernetes
实践教程之如何使用PolarDB-X参数模板
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X参数模板。
|
4月前
|
存储 弹性计算 关系型数据库
实践教程之如何对PolarDB-X的存储节点发起备库重搭
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何对PolarDB-X的存储节点发起备库重搭。
|
4月前
|
存储 SQL 弹性计算
实践教程之如何对PolarDB-X进行备份恢复
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何对PolarDB-X进行备份恢复。
|
4月前
|
SQL 弹性计算 Kubernetes
实践教程之采集PolarDB-X SQL日志到ElasticSearch
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何采集PolarDB-X SQL日志到ElasticSearch。
|
4月前
|
弹性计算 Kubernetes 关系型数据库
实践教程之如何在ARM平台部署PolarDB-X
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
热门文章
最新文章
相关产品
云数据库 RDS PostgreSQL 版
推荐文章
更多


http://www.vxiaotou.com