开发者社区> 风间影月> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

网站平台架构演变史(三) - 数据库表的查询优化

简介: 上篇说道了数据库读写分离,对于大型网站来说这么说是十分有必要的。数据库在整个互联网架构中担当的角色无法有两个,存储和运算,很多时候这两个是并存的,但是在后期,对于上亿条数据来说,让数据库既要存储,又要运算,那么是这是不可行的,为了保证性能,我们仅仅只需要最大化利用DB的存数就行了,连数据库之间的外键管理都不需要,只要有对应的id即可。
+关注继续查看

上篇说道了数据库读写分离,对于大型网站来说这么说是十分有必要的。数据库在整个互联网架构中担当的角色无法有两个,存储和运算,很多时候这两个是并存的,但是在后期,对于上亿条数据来说,让数据库既要存储,又要运算,那么是这是不可行的,为了保证性能,我们仅仅只需要最大化利用DB的存数就行了,连数据库之间的外键管理都不需要,只要有对应的id即可。那么既然如此,相互关联的表肯定会存在删除业务,而事实上我们如今处理删除操作并不是真正的删除,只不过我们添加了is_delete这个字段来标注逻辑是否删除即可。不然在表关联的时候可能会查询不到对应的数据。

如下最重要的用户表中的记录就是绝对不能删除的

举个栗子,我们办理信用卡后会有对应银行中的一个账户,就算你不用卡了,销卡注销了,那么你的账户记录还是会存在的,只不过标志位更改了而已。曾经我有张工行的信用卡,后来不用了,于是在我注销的第二个月我还款错了,但是没有提醒我此卡已经注销,还是照样把钱打了进去,于是就只能很麻烦的跑到总行去走流程把钱取出来了。。。

(注:有些表中的记录可以直接删除的,比如无所谓的消息表,公告表,这些数据在过期后是不会用到的,那么删了也无所谓)

大数据量的情况下查询怎么做?

这里举两个栗子:

1、商品表,我们在电商平台查询商品的时候,其后台并没有真正的去数据库查询,比如淘宝的店铺就有上千万家甚至更多,每家店铺发布的商品又是数以万计,那么商品表中的数据就十分庞大了,直接查询肯定会受到性能影响,那么这个时候不论做水平拆分还是垂直拆分,最终要做的就是使用搜索引擎技术,比如solr或者ES,这样每次查询的时候都是去文件系统中找对应的索引,这样效率会十分高,商品表对于读写来说,写明显要比读要来的多,那么在这种情况下使用搜索引擎是理想的。

2、交易记录表,对于交易来说,每天的交易量也会很多,这个时候很大的情况下会进行数据迁移,也就是水平分表,参照京东的设计,在查询交易的时候把时间分为了多个维度,也就是查询的时候其实是进行了不同表之间的查询,这样可以加速了查询效率。只不过要设定某一时间要进行不同表之间的数据同步以及切换

总结,查询效率的提示本质上是缩小查询范围,范围小了,效率就上去了。水平拆分以及垂直拆分要根据实际情况的业务来进行,不能随意。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
聊一聊数据应用中的数据集市
今天我们聊聊什么是数据集市(DM)?什么时候需要数据集市?
0 0
聊聊数据仓库中维度表设计的二三事
聊聊数据仓库中维度表设计的二三事
0 0
MySQL性能优化(四):如何高效正确的使用索引
优化索引时,可以从本文的这些方面出发,进一步来加深对索引正确高效的使用。
0 0
SQL优化小讲堂(四)——如何高效查询
为什么别人的查询只要几秒,而你的查询语句少则十多秒,多则十几分钟甚至几个小时?与你的查询语句是否高效有很大关系。 今天我们来看看如何写出比较高效的查询语句。
0 0
查询优化技术方案
查询优化技术方案
0 0
支付宝工程师如何搞定关系数据库的“大脑”——查询优化器
本文将深入了解OceanBase在查询优化器方面的设计思路和历经近十年时间提炼出的工程实践哲学。
992 0
聊一聊数据仓库中的元数据管理系统
相信很多朋友都是第一次听说元数据管理系统这个名词,当然,从事非数据仓库工作的人,很少会接触到这个系统,即使是正在从事这方面工作的朋友,可能仍然对它不是很了解,那么今天我来聊一聊元数据管理系统。本文大部分观点与图片汇总字网络,如有不同观点,欢迎留言交流~~ . 一、元数据的定义 按照传统的定义,元数据(Metadata)是关于数据的数据。
24401 0
网站平台架构演变史(四) - 水平拆分的查询
之前在讲表拆分的时候氛围垂直拆分和水平拆分 垂直拆分的查询其实不难,就是从单表变为了多表,而大部分情况下只是对主表的查询多,从表的查询会很少用到,这样的情况下关联查询不需要太多的考虑 水平拆分之前讲了大数据量的情况下根据历史时间来查询,那么今天来说另外一种,还有一只是根据主键id取模后根据这样的规则...
701 0
+关注
风间影月
互联网后端开发工程师,技术经理,项目经理,架构师
文章
问答
文章排行榜
最热
最新
相关电子书
更多
苑海胜专访 《MaxCompute 与大数据查询引擎的技术和故事》
立即下载
持续9年国际排名第一的宽表数据库概述
立即下载
阿里巴巴海量数据场景下的列式数据库 HiStore
立即下载