mysql建多维度的表应该怎么弄啊?MySQL分库分表,一般只能按照一个维度进行查询.
以订单表为例, 按照用户ID mod 64 分成 64个数据库.
按照用户mysql怎么创建订单表的维度查询很快,因为最终mysql怎么创建订单表的查询落在一台服务器上.
但是如果按照商户的维度查询,则代价非常高.
需要查询全部64台服务器.
在分页的情况下,更加恶化.
比如某个商户查询第10页的数据(按照订单的创建时间).需要在每台数据库服务器上查询前100条数据,程序收到 64*100 条数据,然后按照订单的创建时间排序,截取排名90-100号的10条记录返回,然后抛弃其余的6390条记录.如果查询的是第100页,第1000页,则对数据库IO,网络,中间件CPU,都是不小的压力.
分库分表之后,为mysql怎么创建订单表了应对多维度查询,很多情况下会引入冗余.
比如两个集群,一个按照用户ID分库分表,另外一个按照商户ID分库分表.
这样多维度查询的时候,各查各的.
但是有几个问题,一样不好解决.
比如,
每扩展一个维度,就需要引入一个集群.
集群间的数据,如何保证一致性.
冗余占用大量磁盘空间.
从朋友那里看到的订单表结构.做冗余会占用大量的磁盘空间.
create table TS_ORDER
(
ORDER_IDNUMBER(8) not null,
SNVARCHAR2(50),
MEMBER_IDNUMBER(8),
STATUSNUMBER(2),
PAY_STATUSNUMBER(2),
SHIP_STATUSNUMBER(2),
SHIPPING_IDNUMBER(8),
SHIPPING_TYPEVARCHAR2(255),
SHIPPING_AREAVARCHAR2(255),
PAYMENT_IDNUMBER(8),
PAYMENT_NAMEVARCHAR2(50),
PAYMENT_TYPEVARCHAR2(50),
15《Spring Boot 入门教程》多数据源与分布式事务一个项目中使用多个数据源的需求,mysql怎么创建订单表我们在日常工作中时常会遇到 。
以商城系统为例,有一个 MySQL 的数据库负责存储交易数据 。公司还有一套 ERP 企业信息化管理系统,要求订单信息同步录入 ERP 数据库,便于公司统一管理,而该 ERP 系统采用的数据库为 SQL Server。
此时,就可以在 Spring Boot 项目中配置多个数据源 。另外,使用多数据源后,需要采用分布式事务来保持数据的完整性 。
本小节我们使用 Spring Boot 开发一个商城系统的订单生成功能,订单信息同时进入 MySQL 与 SQL Server 数据库 。
首先创建 MySQL 数据库 shop , 并新建订单表 order,表结构如下:
order 表结构
然后创建 SQL Server 数据库 erpshop ,并新建订单表 erp_order,表结构如下 。注意 id 是自增长的唯一标识,out_id 是对应订单在 MySQL 数据库中的唯一标识,以便在两个库中比对订单 。
erp_order 结构
接下来,我们开始实现 Spring Boot 后端项目,数据持久层采用 MyBatis 框架,同时访问两个数据源 。
Spring Boot 版本选择 2.2.5,Group 为 com.imooc,Artifact 为 spring-boot-multidb,生成项目后导入 Eclipse 开发环境 。
我们引入热部署依赖、 Web 依赖、数据库访问相关依赖及测试相关依赖,具体如下:
实例:
由于我们要同时访问两个数据库,所以需要在配置文件中添加两个数据源的配置信息 。注意配置多数据源时,url 配置需要使用spring.datasource.db1.jdbc-url=xxx的形式 。
实例:
多个数据源的情况下,我们需要通过配置类 , 将数据源注册为组件放入 Spring 容器中 。
实例:
通过这个配置类,Spring 容器中就有两个数据源组件 , 这两个组件分别采用spring.datasource.db1和spring.datasource.db2开头的配置信息 。所以通过这两个组件,就能分别操作 MySQL 数据源 1 和 SQL Sever 数据源 2。
多数据源情况下,MyBatis 中的关键组件 SqlSessionFactory 和 SqlSessionTemplate 也需要单独配置,我们需要为两个数据源分别配置一套组件 。
推荐阅读
- 飞机模拟网页游戏下载,飞机模拟游戏中文版
- 罗永浩搞什么直播,罗永浩直播间是谁
- 需要网络的像素游戏,像素游戏网站
- vb.net线程参数 vbnet线程池
- 小程序里怎么发图片,小程序怎么导出图片
- word怎么独立窗口显示,文档独立窗口
- redis过期策略不包括,redis的过期策略有哪些
- 函数在c语言 python怎么引入数学函数
- 手机电话怎么连接路由器,手机电话怎么连接路由器上网