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

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

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

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

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

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

这里举两个栗子:

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

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

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

时间: 2024-08-28 09:25:04

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

网站平台架构演变史(一)

朋友公司的产品已经做了11个年头了,在餐饮业可以说数一数二,网站架构从原始的单一应用一直演变至今,已经十分庞大了,不说完美,但是可支撑的业务量已经十分强大.最近受邀参与了他们的架构分享会,在此我也总结一下大致内容,一方面当做会议纪要,一方面也总结分享给大家看看. 先看一下初期架构,前期网站平台刚刚建立,对于访问量并发量来说并不会很高,所以采用如下的架构即可,虚线框代表服务端可以做一个主备集群,如果挂了可以使备胎立刻顶上,当然这个备胎对于有些创业小公司可以拿掉,毕竟多一台服务器也是成本 需要注意的

网站平台架构演变史(四) - 水平拆分的查询

之前在讲表拆分的时候氛围垂直拆分和水平拆分 垂直拆分的查询其实不难,就是从单表变为了多表,而大部分情况下只是对主表的查询多,从表的查询会很少用到,这样的情况下关联查询不需要太多的考虑 水平拆分之前讲了大数据量的情况下根据历史时间来查询,那么今天来说另外一种,还有一只是根据主键id取模后根据这样的规则把数据均匀分布到不同的数据库表中,一般可以以2.5.10来做,那么分页的时候怎么做,用户在查询的时候是不知道你后台怎么查的,他只关心数据的显示,比如我分页显示10条,那么在后台进去查询的时候需要将"1

网站平台架构演变史(二)

上篇文章大致降了网站架构的一个大致发展趋势,这篇咱们讲讲数据库.数据库在大并发的情况下是最容易出现问题的,往往都是由于写操作引发的网站访问缓慢或者崩溃,之前说过12306就是这个问题. 大并发的时候,打个比方,上下班高峰期经常会堵车,我们把并发访问量当做车流量,某个路段路口比作数据库,某路口就这么大,3车道直行,而车流量巨大的时候就会引发大量车缓慢前行甚至不动,这个就是并发,交通瘫痪了嘛,数据库不也是一样瘫痪吗. 之前我们讲的读写分离,就是一种解决方案,很多网站都是读操作大于写操作的,分开即可,

高性能、高可用平台架构演变史

开篇概述 在如今移动互联网.互联网+.大数据的时代,各类的互联网网站.平台异常突起,如同雨后春笋,有种"忽如一夜春风来,千树万树梨花开"感觉.对于移动互联网时代的平台来说,用户的体验感是否良好?平台的稳定性是否良好?估计是对所有互联网平台来说两大头等要素吧,的确,移动互联网时代,流量就是市场价值,说白了就是收益,就是RMB,失去了流量,那么你也就失去了赚取收益的机会与机遇. 因此,对于互联平台或网站来说,网站的高可用.不间断服务也是平台运营过程中的一个重大决定因素,比如说某平台,三天两

大型网站架构演变史(含技术栈与价值观)

这篇文章是参考李智慧的<大型网站技术架构:核心原理与案例分析>和现蘑菇街CTO曽宪杰的<大型网站系统与Java中间件实践>写的一篇读书笔记. 前言 何谓大型网站?大型网站的特点是什么?大型网站架构发生演变的源动力是什么?大型网站的架构演变经历了哪些阶段?在演变的某个具体阶段使用到常用技术有哪些,为什么要使用这些技术,同时这些技术又解决了什么问题?笔者在初次接触大型网站时思考了以上几个问题,本着缘木求鱼的方式,我打算详细的扒一扒大型网站的演变史.如果对以上的几个问题都理解透彻了,那么

从0到千万级访问量网站架构演变史

从0到千万级访问量网站架构演变史 read it later. 架构演变第一步:物理分离webserver和数据库最 开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已 经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这 个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问

大型网站应用中MySQL的架构演变史

没有什么东西是一成不变的,包含我们的理想和生活!MySQL作为一个免费的开源的关系型数据库,深受大家喜爱,从最初的无人问津到当下的去IOE,都体现出了MySQL举足轻重的作用.今天我们就从淘宝的发展来阐述MySQL在大型网站下的架构演变史! MySQL的可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种 Scale-up : 纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-

[转载]大型网站应用中 MySQL 的架构演变史

没有什么东西是一成不变的,包含我们的理想和生活!MySQL作为一个免费的开源的关系型数据库,深受大家喜爱,从最初的无人问津到当下的去IOE,都体现出了MySQL举足轻重的作用.今天我们就从淘宝的发展来阐述MySQL在大型网站下的架构演变史! MySQL的可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种Scale-up : 纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-o

数据库架构演变及分库分表

当生产环境中业务量激增,数据库数据量也会极具增加.当数据库的数据量达到一定程度时(数据库瓶颈),数据库宿主机负载超高,会严重影响业务,严重时会导致数据库宕机.为了避免这种极端情况的发生,我们应当在发生前做好预案,用于解决数据库数据量过载的问题.以下是我个人工作中使用的解决方案:1)数据库主从或多主多从方案2)数据库冷热数据拆分3)数据库分库分表操作4)在数据库前端增加缓存redis或memcached 一开始时,公司部分业务的架构如下(全都是单节点情况)经过自己强调该架构严重的缺点:节点单一,服