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

食品网站应该怎么做wordpress 中文cms模版

食品网站应该怎么做,wordpress 中文cms模版,中国住房和城乡建设网站,上海网站建设推荐秒搜科技简介#xff1a; 当表数据超过一定量级#xff0c;就需要通过分表来解决单表的性能瓶颈问题#xff1b;当数据库负载超过一定水平线#xff0c;就需要通过分库来解决单库的连接数、性能负载的瓶颈问题。本文将阐述在不同情况下#xff0c;让不同数量级表#xff0c;在同一…简介 当表数据超过一定量级就需要通过分表来解决单表的性能瓶颈问题当数据库负载超过一定水平线就需要通过分库来解决单库的连接数、性能负载的瓶颈问题。本文将阐述在不同情况下让不同数量级表在同一个业务ID的事务操作路由到同一分库中的方案省去解决垮库事务的烦恼。 作者 | 雨庄 来源 | 阿里技术公众号 一 前言 技术同学都知道当表数据超过一定量级我们就需要通过分表来解决单表的性能瓶颈问题当数据库负载超过一定水平线我们就需要通过分库来解决单库的连接数、性能负载的瓶颈问题。 本文主要阐述在同时满足以下业务场景 分表分库存储需要对分表数量不同的表进行同事务操作这些表的分库分表策略依赖的Sharding业务ID一致 等情况下让这些不同数量级表在同一个业务ID的事务操作路由到同一分库中的方案省去解决垮库事务的烦恼。 二 案例 1 背景 假设有2个数据库实例需要保存商家订单明细和汇总2张表的数据这2张表的 分库分表策略都用shop_id取模策略按单表数据500w的原则进行分表分库 1shop_order_detail 商家订单明细表日均数据6000w 2shop_order_stat 商家订单统计表日均数据2000w 配置完成后生成的库表 然后我们要做这么一件事情在同一个事务中新增用户订单明细成功后更新用户订单统计数据 2 问题 此时我要处理一笔 user_id 3 的订单数据 如图执行新增shop_order_detail表操作的时候操作被路由到了DB0中执行更新shop_order_stat表操作的时候操作被路由到了DB1。这时候 这两个操作跨库了无法在同一个事务中执行 流程异常中断。 如果用TDDL组件的话就会报这样的错 ### Cause: ERR-CODE: [TDDL-4603][ERR_ACCROSS_DB_TRANSACTION] Transaction accross db is not supported in current transaction policy三 解决方案 解决多表跨库事务的方案有很多本文阐述的是如下解决方案 将shop_order_stat作为shop_order_detail的映射基础表调整shop_order_detail的分表策略让shop_order_detail和shop_order_stat的数据都路由到同一个库中。但该方案的前提是目标表的表数量是映射基础表表数量的N倍数。比如shop_order_stat的总表数量是4shop_order_detail的总表数量是12故shop_order_detail的总表数是shop_order_stat总表数的3倍。 shop_order_detail新分表分库策略的推导思路如下 1 调整分库策略 首先我们看shop_id在011范围内用shop_id % 4分库分表策略shop_order_stat的sharding分布图 用shop_id % 12分库分表策略shop_order_detail的sharding分布图 图中看出两张表都是根据shop_id做sharding但现有同一个shop_id有可能会被路由到不同的库中导致跨库操作。 此时我只需要把shop_order_detail的分库策略调整为跟shop_order_stat一致保证同一个shop_id能路由到同一个DB分片中就能解决这个问题。调整后的sharding分布图 但调整完分库策略后原本的表映射策略就失效了 原本的shop_id 5数据可以通过shop % 12 5的取模策略映射到DB0的shop_order_detail_05表上。调整完分库策略后shop_id 9被路由到了DB0中通过shop % 12 9的取模策略会映射到shop_order_detail_09这张表上但shop_order_detail_09这张表不在DB0中所以操作失败了。 这时候我们需要调整分表策略把shop_id 9的数据既映射到DB0中的shop_order_detail_05表中。 2 分区取模策略 首先以shop_order_stat的单库表数量2作为分块大小总表数量4作为分区大小对shop_id[0~11]进行分区操作并且将shop_id根据分块大小取模 当前分库数量为2shop_order_stat的单库表数量为6计算出跨库步长分库下标*单库表数量 根据分区下标和分块大小计算出分区步长分区下标*分块大小最后根据分块取模数跨库步长分区步长就能定位到最终的分表下标了 这样就完成了把shop_id 9的数据既映射到DB0中的shop_order_detail_05表中的工作。 四 计算公式 分表下标路由策略计算公式 分表下标 业务ID取模 % 分块大小 业务ID取模 / 分块大小 单库表数量 业务ID取模 / 分区大小 分块大小业务ID取模 业务ID % 总表数量分区大小 目标映射表的总表数量分块大小 目标映射表的单库表数量 以上面的案例为例调整shop_order_detail的分库分表路由策略 1shop_order_stat 商家订单统计表 2shop_order_detail 商家订单明细表 TDDL sharding-rule配置代码示例 Java代码示例 long shopId 9; int dbs 2; int tables 12; int oneDbTables 6; int partitionSize 4; int blockSize 2; int sharding (int) (shopId % tables); // 目标分库 int dbIndex (int) (shopId % partitionSize / dbs); // 目标分表 int tableIndex sharding % blockSize sharding % partitionSize / blockSize * oneDbTables sharding / partitionSize * blockSize; 五 结尾 我是本地生活外卖商家运营研发团队中的一员在实际业务场景的设计中遇到了多表事务分库内闭环的问题没有找到适合的案例参考才孵化出这个解决方案。 目前该方案已经在落地上线有相同业务场景需求的同学可直接套用计算公式既可欢迎大家交流沟通。 原文链接 本文为阿里云原创内容未经允许不得转载。
http://www.zqtcl.cn/news/557780/

相关文章:

  • 网站编程好学吗免费下载app并安装
  • 广州专业网站制作设计网站建设分几种
  • 有没有专业做艺术品的网站长沙人才市场招聘信息
  • 河池做网站通过邮箱查注册网站
  • 金融互助网站开发网上免费设计效果图
  • 网站开发 例子施工企业质量管理体系应按照我国
  • 义乌建设网站网络营销推广有哪些方法
  • 宿迁建设局网站a类证查询怎么自己搭建梯子
  • 成都网站品牌设计策划网络推广如何收费
  • html5 js全屏滑动网站源码wordpress 插件 破解
  • 做电影网站怎么批量去水印微信用什么小程序可以提取文字
  • 网站开发费用周期域名网站建设方案书模板
  • 织梦网站问题关于政务网站建设工作情况的总结
  • wordpress 拿站网站搭建后如何使用
  • 网站设计应遵循的原则wordpress免费空间
  • 建设网站的特色企业内部培训app软件
  • jsp网站缓存在哪wordpress设置静态页面
  • 百度做网站电话多少东台网页定制
  • 暖通设计网站推荐百度在西安的公司叫什么
  • 天津响应式网站设计网站建设的任务
  • 多语言网站 自助江门建设局网站
  • 宜兴做阿里巴巴网站常州外贸网站设计
  • 长沙米拓建站wordpress最底部版权
  • 小企业网站建设费用一年wordpress 怎么登陆
  • 阿里云建站可不可以备案wordpress评论滑动插件
  • 网站建设教程出售用苏州久远网络现在的网络营销方式
  • 浮动播放器wordpress刷神马seo排名首页排名
  • 建设网站呼叫中心有什么好处站长统计免费下载
  • 做网站电脑配置要求个高吗电子商务网站的建设包含哪些流程图
  • 青岛做网站大公司wordpress文章页加一言