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

多表关联对集中式数据库和分布式数据库系统冲击

我总不能系统所有的SQL都是单表吧?

  • 如果业务场景真的简单也不是不可以。
  • 不过绝大部分都不会这么说,都会说自己系统特别复杂。可能说系统简单有点不好意思和人打招呼。
  • 其实我倒是希望我们的业务场景简单一点。但是事与愿违,那业务逻辑是从业以来闻所未闻,以至于到现在我都说不清楚。

有的系统就是SQL都是单表

  • 为什么?因为是某国产数据库。应用真的是完全适配了。在我看来属于跪着适配的。其实从我内心还真是希望有这种,因为DBA的话语权就可以高一点。业务想一个需求(不行,你别想,打回去)

那我们说说多表的冲击

  • 看这两句是不是一样?
  • select * from a,b where a.id=b.id and a.id=1;
  • select * from a,b where a.id=b.id and a.id=1 and b.id=1;
  • 答案是完全一样。
  • 那么问题就是先从a.id=1 开始还是先从b.id=1开始。(单表情况下没有这个问题)于是这有两种可能。就看数据库怎么选了。
  • 如果是具体业务表,开发人员能说先找主项,再找明细等。但是计算机哪里知道?
  • 再看下面两句
  • select * from a,b,c where a.id=b.id and a.id=c.id and c.id=1;
  • select * from a,b,c where a.id=b.id and a.id=c.id and c.id=1 and b.id=1 and a.id=1;
  • 答案是完全一样。
  • 那么问题就是先从a.id=1 开始还是先从b.id=1开始或者是先从c.id=1开始。于是有6种可能。
  • 那么4表关联呢?
  • 答案是N! N表的阶乘。
  • 你想想一下10表关联。而传统行业8表是起步价,10表?30个表又何妨?

多表关联首先冲击的就是优化器

  • 而从事数据库的人都知道,优化器是数据库最难之一。底层全是数学算法。
  • 数学这个东西不会就是不会,逼急了什么事情都做的出来,但是数学除外。我考不上清华不是因为考试时间不够,不会的就是不会。就这么简单的道理。
  • 数据库要从N!中依次选择最优的执行下来。如果选择错了,那么本来应该快的就慢了。
  • 就这一点就是现在所谓兼容性中最大的问题,没有之一。大家都在说的兼容性是语法兼容性,有没有哪家说到优化器兼容100%。如果有且可以论证,那么大家去用吧。不被卡脖子了。

多表关联其次冲击的是分布式

  • 我以前也听过不少分布式数据库说3表以上基本无响应了。我当时想这优化器也太弱了。
  • 后来想想也不完全是优化器的事情。如果传统行业那种多表大量查询,不同节点大量数据交互这本身就慢。
  • 再后来我意识到了还有其他的因素。
  • 有些分布式数据库(也许有的不是,也许有的改进了,但是确实有)A表和B表同时进行重分布,假设有5个实例,每个示例上的进程有会因为查询而有1个会话进程。就会产生 5个会话。如果3表关联那么就是10个会话。你试想一下N表关联的场景。而且实例数越多会话也会越多。实例是M,关联是N的话。那么会话就是M*N。
  • 这对于非互联网场景的应用开发来说是不能想象的。我们上来就是10-30个表。稍微点几下,会话数没有了。
  • 那么也难怪无响应了。所以可能无响应某种程度也来自于这里。
  • 我也知道这里在改进。但是架不住传统行业的业务就是复杂,不是说做到应用侧就可以了。而是很多就不是应用侧能做的了的。必须重度放在数据库中。不信的话你试试,这不是应用适配。而是行业模式适配(当然我其实乐见于这种可以整顿一下行业规划的事情,如果说能从我们数据库出发整顿行业业务流程,也是值得骄傲的事情)

都说深水区了

  • 因为要应用适配,金融头部是真的有预算投入,几个亿都是小钱。但是腰间部的不一定。而没有这些预算的企业就难了。
  • 我今天想说的,除了应用适配可能还要是行业适配。
http://www.dtcms.com/a/427122.html

相关文章:

  • Suifest 2025 活动速递
  • 交叉熵损失函数和负对数似然损失函数 KL散度
  • 坪地网站建设教程网站seo优化方法
  • 网站数据库多大合适成都小型软件开发公司
  • Gibbs采样:全面解析马尔可夫链蒙特卡洛的核心算法
  • 【开题答辩全过程】以 python的音乐网站为例,包含答辩的问题和答案
  • 二项式定理——力扣2221.数组的三角和
  • 【数据结构】快速排序与归并排序的实现
  • LeetCode算法日记 - Day 57: 括号生成、组合
  • FinalShell 服务器远程连接工具
  • 分享:一键自动化巡检服务器
  • 广州建站快车加盟网网站建设策划书
  • 12306网站架构站长之家seo综合
  • 学习:uniapp全栈微信小程序vue3后台-额外/精彩报错篇
  • 【云服务器相关】云服务器与P2P
  • vscode终端输出中文乱码一种解决方法
  • 脑机接口(BCI):从信号到交互的工程实践
  • 更改mysql密码
  • 同步与互斥
  • Java Web搭建商城首页
  • STP生成树(h3c)
  • 深圳汇网网站建设移动互联网时代的到来为很多企业提供了新的商业机会
  • 安卓接入Bigo广告源
  • 安卓Handler+Messenger实现跨应用通讯
  • 公司网站建设完成通知重庆市工程建设交易中心网站
  • 北京网站设计公司hlh成都柚米科技15企业营销型网站系统
  • 德州网站建设招聘帝国网站怎么仿站
  • 15. C++ 类的转换
  • 基于STM32与influxDB的电力监控系统-7
  • python 之 argparse的简单使用