作者:马进,DDB项目负责人,2013年加入网易,热衷于分布式中间件相关方面工作,从事过分库分表数据库DDB、缓存NKV、分布式事务中间件TCC、分布式视频处理系统NTS等项目。本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》互联网时代,也是关系型数据库独领风骚的时代,从早期的Oracle独步天下,到现在MySQL蒸蒸日上, ......
377
0
0
2022-08-04
由于数据量以及IO效率的因素,很多项目对数据支持的数据库会采取分库分表的方式。使用了分库分表之后需要解决的一个问题就是主键的生成。多个表之间的主键就不能用数据库本身的自增主键来支持,因为不同表之间生成的主键会重复。所以需要其他的方式获取主键ID。一般来说解决方案主要有三种:oracle sequence : 基于第三方oracle的SEQ.NEXTVAL来获 ......
323
0
0
2022-07-30
作者|华慰编辑|小智“分库分表”是谈论数据库架构和优化时经常听到的关键词。对于这些业务量正在高速增长的公司,它并不那么容易实践。这是来自大众点评团队的技术实践,仅供参考。注:本文授权转自微信公众号「美团点评技术团队」写在前面原大众点评的订单单表早已突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展, ......
366
0
0
2022-07-24
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分 ......
407
0
0
2022-07-15
摘要: 分库分表扩容是一件头疼的问题,否有方案,既支持快速扩展,又不降低可用性?上一篇关于《一致性hash在DynamoDB上的应用》的介绍中,有一个特别亮点,就是它无需停机就可以动态扩容。这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题,如果采用对db层做一致性hash,或是中间价的支持,它的成本过于高昂了,如果不如此,只能 ......
389
0
0
2022-04-29
一、前言数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。二、分片(类似分库)分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Shard这个词的意思是“碎片”。如果将一个数据库当作一块 ......
371
0
0
2022-04-26
先来回顾下整个分库分表的流程如下:整个过程也很好理解,基本符合大部分公司的一个发展方向。很少会有业务一开始就会设计为分库分表,虽说这样会减少后续的坑,但部分公司刚开始都是以业务为主。直到业务发展到单表无法支撑时,自然而然会考虑分表甚至分库的事情。分表首先讨论下什么样的情况下适合分表?根据我的经验来看,当某张表的数据量已经达到千万甚至上亿,同时日增数据量在 2 ......
356
0
0
2022-04-12
【摘要】随着数据量增大,数据库性能明显降低,这时会考虑分库方案(把原来一个库中的数据按一定规则分摊到多个库中)。从而分摊单库压力,来缓解当下的性能问题。可谓分库一时爽,一直分库一直爽。但是当需要运算的内容来自这些分库时,又会带来新的难题:计算不能直接使用 SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大。想要整体上一劳永逸的解决分库后的查询统 ......
331
0
0
2022-04-10
假设有一张用户表,经过分库分表之后,现在均匀分布在2台服务器。每个服务器2张表1. 全局视野法:因为不清楚按照时间排序之后的第三页数据到底是如何分布在数据库上的,所以必须每个库都返回3页数据,所得到的6页数据在服务层进行内存排序,得到全局视野,再取第3页数据。优点:通过服务层修改,扩大数据查询量,得到全局视野,业务无损,精确缺点(显而易见):每个分库都需要返 ......
325
0
0
2022-04-10
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分 ......
292
0
0
2022-04-10
数据库瓶颈不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务service来看, 就是可用数据库连接少甚至无连接可用,接下来就可以想象了(并发量、吞吐量、崩溃)。IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询会产生大量的IO,降低查询速度->分库和垂直分表第 ......
311
0
0
2022-04-08
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分 ......
262
0
0
2022-04-07
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:系统被切分成了,用户,订单交易,支付几个模块;4.1 如何划分表一个问题:在两台主机上的两个数据库中的表,能否关联查询?答案:不可以关联查询。 分库的原则:有紧密关联关系的表应该在一个库里,相互 ......
325
0
0
2022-04-06
一、背景当今互联网大爆炸的时代,业务越来越多和大,单库单表数据超出数据库支持容量,数据库I/O操作次数会越来越多和慢,数据库的整体性能就会急剧下降。二、如何优化这里我想到几种优化的方法减少数据库访问压力使用缓存技术,对数据库的信息进行缓存,减少数据库访问压力使用Nginx进行静态资源的获取,对一些高访问的网页,一次访问时可以先生成静态页面存到本地中,用户再次 ......
304
0
0
2022-04-03