当前位置: 首页 > news >正文

ShardingSphere-Proxy分表场景测试案例

快速入门文章参考:《ShardingSphereProxy:快速入门》

基于K8S部署文章参考:《基于K8s部署ShardingSphere-Proxy》

基于golang的测试用例参考:《ShardingSphere-Proxy 连接实战:从 Golang 原生 SQL 到 GORM 的应用》

背景

我们需要具体的看一下ShardingSphere-Proxy分表组件的边界,因此,我测试了常用的41个场景。

数据库表结构

我们对订单表(orders)基于 user_id 进行了分表操作,共分为四张表。而用户表(user)和产品表(product)则未进行分表处理,它们的建表语句如下:

DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders_0`  (`id` bigint NOT NULL,`order_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`user_id` int NOT NULL,`product_id` int NOT NULL,`order_date` bigint NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` bigint NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product`  (`id` bigint NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

测试场景

项目说明是否包含分表键测试sql结果
全表查询SELECT * FROM `orders`;支持
等值查询SELECT * FROM `orders` WHERE order_id='20240101ORDER9503';支持
SELECT * FROM `orders` WHERE user_id=8648;支持
and查询SELECT * FROM `orders` WHERE order_id='20240101ORDER6546' AND product_id=861;支持
and查询SELECT * FROM `orders` WHERE user_id=4581 AND product_id=213支持
范围查询in查询SELECT * FROM `orders` WHERE user_id IN (2608,4581,2142,3519)支持
in查询SELECT * FROM `orders` WHERE order_id IN ('20240101ORDER6546','20250101ORDER2295','20250101ORDER4465','20240101ORDER7826')支持
between查询SELECT * FROM `orders` WHERE order_id BETWEEN '20240101ORDER6546' AND '20240101ORDER6548支持
between查询SELECT * FROM `orders` WHERE user_id BETWEEN 4581 AND 4583支持
or查询SELECT * FROM `orders` WHERE order_id = '20240101ORDER6546' OR order_id = '20250101ORDER2295'支持
or查询SELECT * FROM `orders` WHERE user_id = 4581 OR user_id = 3519支持
>查询 SELECT * FROM `orders` WHERE order_id > '20240101ORDER6546'支持
>查询SELECT * FROM `orders` WHERE user_id > 4581支持
累加聚合sumSELECT SUM(product_id) FROM `orders` WHERE order_id='20240101ORDER6546'支持
sumSELECT SUM(product_id) FROM `orders` WHERE user_id=4581支持
sumSELECT SUM(product_id) FROM `orders`
countSELECT count(*) FROM `orders` WHERE order_id='20240101ORDER6546'支持
countSELECT count(*) FROM `orders` WHERE user_id=4581支持
countSELECT count(*) FROM `orders`支持
比较聚合max否        SELECT MAX(user_id) FROM `orders`支持
minSELECT MIN(user_id) FROM `orders`支持
平均聚合avgSELECT AVG(user_id) FROM `orders`支持
分组groupSELECT *,SUM(product_id) AS sum_product,MAX(product_id) as max_product FROM `orders` GROUP BY `order_id`支持
groupSELECT *,SUM(product_id) AS sum_product,MAX(product_id) as max_product FROM `orders` GROUP BY `user_id`支持
排序、分页order/limit否        SELECT * FROM `orders` ORDER BY order_id desc LIMIT 5支持
order/limitSELECT * FROM `orders` ORDER BY user_id desc LIMIT 5支持
去重DISTINCT SELECT DISTINCT `order_id` FROM `orders`支持
DISTINCTSELECT DISTINCT `user_id` FROM `orders`支持
关联查询joinSELECT orders.*,product.* FROM `orders` JOIN product ON orders.product_id = product.id支持
joinSELECT orders.*,user.* FROM `orders` JOIN user ON orders.user_id = user.id支持
子查询SELECT subquery.* FROM (SELECT orders.* FROM orders JOIN product ON orders.product_id = product.id) AS subquery支持
SELECT subquery.* FROM (SELECT orders.* FROM orders JOIN user ON orders.user_id = user.id) AS subquery支持
INSELECT * FROM orders WHERE user_id IN (SELECT id FROM user)支持
UNIONUNIONSELECT * FROM orders WHERE user_id = 8648 UNION SELECT * FROM orders WHERE user_id = 3401支持
UNIONSELECT * FROM orders WHERE order_id = '20240101ORDER6546' UNION SELECT * FROM orders WHERE order_id = '20240101ORDER9728'
UNION ALLSELECT * FROM orders WHERE order_id = '20240101ORDER6546' UNION SELECT * FROM orders WHERE order_id = '20240101ORDER9728'支持
UNION ALLSELECT * FROM orders WHERE order_id = '20240101ORDER6546' UNION ALL SELECT * FROM orders WHERE order_id = '20240101ORDER9728'支持
UPDATE根据主键更新UPDATE `orders` SET `product_id`=1 WHERE id = 1866023311733952512支持
UPDATE `orders` SET `product_id`=1 WHERE user_id = 9148支持
DELETE根据主键删除DELETE FROM `orders` WHERE id = 1866023311071252480支持
DELETE FROM `orders` WHERE user_id = 4389支持
INSERTINSERT INTO `orders` (`order_id`,`user_id`,`product_id`,`order_date`,`id`) VALUES ('20240101ORDER1227',1660,106,1735632223,1874003486933258240)支持

相关文章:

ShardingSphere-Proxy分表场景测试案例

快速入门文章参考:《ShardingSphereProxy:快速入门》 基于K8S部署文章参考:《基于K8s部署ShardingSphere-Proxy》 基于golang的测试用例参考:《ShardingSphere-Proxy 连接实战:从 Golang 原生 SQL 到 GORM 的应用》 背景 我们…...

学技术学英文:Tomcat的线程模型调优

导读: tomcat 线程调优关键需要理解下面这几个参数: 1. maxConnections 描述:指定服务器能够同时接受和处理的最大连接数。也就是说,服务器在任何时候都能处理的最大并发连接数。作用:限制服务器在任何给定时间点能…...

创建flutter项目遇到无法连接源的问题

Flutter 环境信息 Flutter版本: 3.19.4 (channel stable) Framework: revision 68bfaea224 (2024-03-20) Engine: revision a5c24f538d Dart: 3.3.2 DevTools: 2.31.1 项目基本信息 项目路径: D:\F\luichun 域名: www.luichun.com.cn 支持平台: android, web, windows 项目创…...

MAC系统QT图标踩坑记录

MAC系统QT图标踩坑记录 1. 准备图标1.1 方法一:下载准备好的图标1.2 方法二:自己生成图标1.2.1 准备一个png文件1.2.2 用sips生成不同大小的图片1.2.3 用iconutil生成图标文件 2. 配置图标2.1. 把图标改命成自己想要的名字,如icon.icns&#…...

TF-IDF(Term Frequency-Inverse Document Frequency)详解:原理和python实现(中英双语)

中文版 TF-IDF算法详解:理解与应用 TF-IDF(Term Frequency-Inverse Document Frequency)是信息检索与文本挖掘中常用的算法,广泛应用于搜索引擎、推荐系统以及各种文本分析领域。TF-IDF的核心思想是通过计算一个词在文档中的重要…...

【竞技宝】CS2:HLTV2024职业选手排名TOP15-xantares

北京时间2024年12月30日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP15选手为EternalFire战队的xantares选手。 选手简介 xantares是一名来自于土耳其的CS职业选手,出生于1995年,今年已经29岁。早在2012年&…...

Spring-kafka快速Demo示例

使用Spring-Kafka快速发送/接受Kafka消息示例代码&#xff0c;项目结构是最基础的SpringBoot结构&#xff0c;提前安装好Kafka&#xff0c;确保Kafka已经正确启动 pom.xml&#xff0c;根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…...

客户案例:基于慧集通集成平台,打通屠宰管理系统与用友U8C 系统的全攻略

一、引言 本原型客户成立于2014年&#xff0c;是一家集饲草种植、肉牛养殖、精深加工、冷链物流、餐饮服务于一体的大型农牧综合体。公司下设三个子公司分别涵盖农业、畜牧业、肉制品加工业与餐饮物流服务业。公司严格按照一二三产业融合发展要求&#xff0c;以肉牛产业化为支…...

模型 九屏幕分析法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九屏幕法&#xff1a;全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机&#xff0c;为了全面评估市场潜力和风险&#xff0c;他们…...

Qanything 2.0源码解析系列6 PDF解析逻辑

Qanything 2.0源码解析系列6: PDF解析逻辑 type: Post status: Published date: 2024/12/04 summary: 深入剖析Qanything是如何拆解PDF的,核心是pdf转markdown category: 技术分享 原文:www.feifeixu.top 😀 前言: 在前面的文章中探究了图片是怎么进行解析的,这篇文章对…...

MAC系统QT Creator的快捷键

安装好QT Creator后使用了一段时间&#xff0c;真是越用越难受&#xff0c;只想说&#x1f5d1;️。。。 找一圈qt creator的快捷键 0. 快捷键界面 这里的搜索真的是…无语&#xff0c;不考虑是人查找吗&#xff1f;&#xff1f; 1. 代码前后浏览 2. 移动代码 3. 半自动导入…...

【深度学习】多目标融合算法—样本Loss提权

目录 一、引言 二、样本Loss提权 2.1 技术原理 2.2 技术优缺点 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行为为预估目标&#xff0c;比如通过ctr预估点击率。但实际推荐系统业务场景中&#xff0c;更多是多…...

C 实现植物大战僵尸(四)

C 实现植物大战僵尸&#xff08;四&#xff09; C 实现植物大战僵尸&#xff0c;完结撒花&#xff08;还有个音频稍卡顿的性能问题&#xff0c;待有空优化解决&#xff09;。目前基本的功能模块已经搭建好了&#xff0c;感兴趣的友友可自行尝试编写后续游戏内容 因为 C 站不能…...

Tailwind CSS:现代 CSS 框架的优雅之选

Tailwind CSS&#xff1a;现代 CSS 框架的优雅之选 在现代前端开发中&#xff0c;CSS 的灵活性和复杂性让开发者在设计与实现之间寻找平衡。而 Tailwind CSS 的出现&#xff0c;重新定义了 CSS 框架的使用方式。它是一种原子化的 CSS 工具库&#xff0c;提供了丰富的类名以快速…...

MyBatis 使用的设计模式详解

MyBatis 是一个优秀的持久层框架&#xff0c;它简化了 Java 应用程序与数据库之间的交互。为了实现高效、灵活且易于维护的代码&#xff0c;MyBatis 内部使用了多种设计模式。本文将详细介绍 MyBatis 中应用到的设计模式及其作用。 工厂模式&#xff08;Factory Pattern&#x…...

LabVIEW 中 NI Vision 模块的IMAQ Create VI

IMAQ Create VI 是 LabVIEW 中 NI Vision 模块&#xff08;NI Vision Development Module&#xff09;的一个常用 VI&#xff0c;用于创建一个图像变量。该图像变量可以存储和操作图像数据&#xff0c;是图像处理任务的基础。 ​ 通过以上操作&#xff0c;IMAQ Create VI 是构建…...

2024 年度总结

时光荏苒&#xff0c;2024 年即将画上句号&#xff0c;回顾这一年的写博历程&#xff0c;有付出、有收获、有成长&#xff0c;也有诸多值得回味与反思的瞬间。 一、内容创作 主题涉猎&#xff1a;这一年&#xff0c;我致力于探索多样化的主题&#xff0c;以满足不同读者群体的…...

STM32 高级 物联网通讯之LoRa通讯

目录 LoRa通讯基础知识 常见的3种通讯协议 远距离高速率的传输协议 近距离高速率传输技术 近距离低功耗传输技术 低功耗广域网 采用授权频段技术 非授权频段 LoRa简介 LoRa的特点 远距离 低功耗 安全 标准化 地理定位 移动性 高性能 低成本 LoRa应用 LoRa组…...

【笔记】在虚拟机中通过apache2给一个主机上配置多个web服务器

&#xff08;配置出来的web服务器又叫虚拟主机……&#xff09; 下载apache2 sudo apt update sudo apt install apache2 &#xff08;一&#xff09;ip相同 web端口不同的web服务器 进入 /var/www/html 创建站点一和站点二的目录文件&#xff08;目录文件名自定义哈&#x…...

数据库的创建与删除:理论与实践

title: 数据库的创建与删除:理论与实践 date: 2024/12/31 updated: 2024/12/31 author: cmdragon excerpt: 在当今的数字时代,数据的管理和存储变得尤为重要。数据库作为数据存储的结构化方案,为数据的增删改查提供了系统化的方法。在一个典型的数据库管理系统中,创建和…...

别再死记硬背公式了!用Python实战SCS模型,5分钟搞定城市降雨径流估算

用Python实战SCS模型&#xff1a;5分钟自动化城市降雨径流分析 水文工程师们是否厌倦了手动查表计算CN值&#xff1f;环境分析师是否还在为重复的径流公式推导头疼&#xff1f;今天我们将用Python彻底改变传统工作流——无需记忆复杂公式&#xff0c;只需5行核心代码即可完成从…...

Perplexity数学知识查询稀缺资源包(限时开放48小时):含12类经典数学场景Prompt+错误模式对照表+自动校验脚本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity数学知识查询 Perplexity 是衡量语言模型预测能力的核心指标&#xff0c;其数学定义源于信息论中的交叉熵。它本质上是模型对测试语料困惑程度的指数化表达&#xff0c;值越低表示模型对序列…...

别再问SAP权限怎么配了!从MM01物料创建权限入手,5分钟搞懂PFCG角色配置核心逻辑

SAP权限配置实战&#xff1a;从MM01物料创建权限掌握PFCG角色设计精髓 在SAP项目实施中&#xff0c;权限配置往往是新手顾问最容易卡壳的环节。当用户抱怨"为什么我点这个按钮就报权限错误"时&#xff0c;很多刚入行的顾问只能尴尬地回应"我查查后台配置"。…...

手把手教你用ZYNQ PS-SPI读写W25Q80 Flash(附Vitis代码与逻辑分析仪调试技巧)

ZYNQ PS-SPI驱动W25Q80 Flash全流程实战与深度调试指南 在嵌入式系统开发中&#xff0c;外部Flash存储器的可靠读写是许多应用的基础需求。Xilinx ZYNQ系列SoC的Processing System(PS)端集成了SPI控制器&#xff0c;可直接连接W25Q80等串行Flash芯片&#xff0c;无需占用宝贵的…...

荣耀出征唯一官网下载:零氪平民友好 无套路轻松畅玩

国新出审〔2023〕941号&#xff0c;ISBN 978-7-498-12393-0&#xff0c;备案号&#xff1a;皖ICP备2023003237号-2。由河北传娱网络科技有限公司拥有著作权&#xff0c;方圆电子音像出版社有限责任公司正规出版&#xff0c;安徽游昕网络科技有限公司负责全程运营&#xff0c;资…...

uni-app视频播放二选一:手把手对比调试video.js与MuiPlayer插件(H5/m3u8实战)

uni-app视频播放方案深度对比&#xff1a;video.js与MuiPlayer在H5/m3u8场景下的实战抉择 当uni-app开发者面临H5端m3u8视频播放需求时&#xff0c;技术选型往往成为项目推进的第一道门槛。video.js与MuiPlayer作为两大主流解决方案&#xff0c;各自拥有独特的生态优势与适配特…...

Mac/Win双平台保姆级教程:从零配置ADB环境到连接真机/模拟器

Mac/Win双平台保姆级教程&#xff1a;从零配置ADB环境到连接真机/模拟器 第一次接触Android开发或测试时&#xff0c;配置ADB环境往往是让人头疼的第一步。不同操作系统、不同设备品牌、不同模拟器之间的差异&#xff0c;让很多新手在"adb devices"命令前败下阵来。…...

保姆级教程:在群晖DSM 7.2上为虚幻引擎5项目配置Perforce Helix Core(附TypeMap避坑清单)

群晖DSM 7.2上为虚幻引擎5配置Perforce Helix Core全指南 对于独立游戏开发者和小型工作室来说&#xff0c;版本控制系统是项目管理的基石。Perforce Helix Core以其卓越的大文件处理能力&#xff0c;成为虚幻引擎项目版本控制的首选方案。本文将手把手指导你在群晖NAS上搭建Pe…...

光猫拨号下,如何把二级路由器变成‘透明网桥’?一个设置让NAS、打印机全屋可见

光猫拨号下的家庭网络优化&#xff1a;二级路由器透明化实战指南 家里NAS里的电影在客厅电视上死活刷不出来&#xff1f;书房电脑找不到卧室的无线打印机&#xff1f;这些问题往往源于家庭网络中多台路由器形成的"局域网套娃"。本文将手把手教你如何将二级路由器转化…...

TI AM64x 5路原生千兆网口:工业物联网确定性网络与多核异构计算实战

1. 项目概述&#xff1a;为什么我们需要5路原生千兆网口&#xff1f;在工业现场摸爬滚打十几年&#xff0c;我见过太多因为网络接口“捉襟见肘”而导致的尴尬局面。想象一下&#xff0c;一个产线控制柜里&#xff0c;PLC、视觉系统、多台伺服驱动器、HMI触摸屏&#xff0c;还有…...