文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析3、针对缺点给出改进方案正文先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请 ......
375
0
0
2022-04-12
什么是SQLite?SQLite是一款轻型的嵌入式数据库.它的数据库就是一个文件.小型嵌入式,跟mysql差不多,但是更小,功能相对较少,它占用的资源非常低,可能只需要几百k的内存就够了.是一个真正开源的无限制的数据库,跨平台,支持Linux, Mac , Android, iOS和 Windows 等,主要应用于嵌入式开发.SQLite有什么特点?SQLi ......
456
0
0
2022-04-12
任何电商平台的一个主业务场景就是:加入购物车;去结算,填写/选择收货地址;检查/扣减库存,生成订单并付款;其中第三步,检查/扣减库存,常规代码实现如下:判断剩余库存量,如果库存足够,则做扣减操作;select stock from goods_stock where sku = 'a1' if(stock - buy_num) >= 0){ //如果 ......
433
0
0
2022-04-12
介绍DBeaver是一个免费的跨平台数据库工具,适用于开发人员,数据库管理员和分析师。支持所有流行的数据库:MySQL,PostgreSQL,MariaDB,SQLite,Oracle,DB2,SQL Server,Sybase,MS Access,Teradata,Firebird,Derby等。免费开源的数据库管理软件——DBeaver更高级的企业版是需 ......
467
0
0
2022-04-11
数据库范式是为解决关系数据库中数据冗余、更新异常、插入异常、删除异常问题而引入的。简单的理解,数据库范式可以避免数据冗余,减少数据库的空间,并且减轻维护数据完整性的麻烦。第一范式(1NF)第一范式,强调属性的原子性约束,要求属性具有原子性,不可再分解。举个例子,活动表(活动编码,活动名称,活动地址),假设这个场景中,活动地址可以细分为国家、省份、城市、市区、 ......
370
0
0
2022-04-11
简介: 为什么需要研究跨库分页?互联网很多业务都有分页拉取数据的需求,例如:(1)消息过多时,拉取第N页消息;(2)下单过多时,拉取第N页订单;(3)浏览58同城,查看第N页帖子;这些业务场景对应的消息表,订单表,帖子表分页拉取需求,都有这样一些共同的特点:(1)有个业务主键id, msg_id, order_id, tiezi_id;(2)分页按照非业务主 ......
357
0
0
2022-04-10
【摘要】随着数据量增大,数据库性能明显降低,这时会考虑分库方案(把原来一个库中的数据按一定规则分摊到多个库中)。从而分摊单库压力,来缓解当下的性能问题。可谓分库一时爽,一直分库一直爽。但是当需要运算的内容来自这些分库时,又会带来新的难题:计算不能直接使用 SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大。想要整体上一劳永逸的解决分库后的查询统 ......
389
0
0
2022-04-10
假设有一张用户表,经过分库分表之后,现在均匀分布在2台服务器。每个服务器2张表1. 全局视野法:因为不清楚按照时间排序之后的第三页数据到底是如何分布在数据库上的,所以必须每个库都返回3页数据,所得到的6页数据在服务层进行内存排序,得到全局视野,再取第3页数据。优点:通过服务层修改,扩大数据查询量,得到全局视野,业务无损,精确缺点(显而易见):每个分库都需要返 ......
383
0
0
2022-04-10
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分 ......
353
0
0
2022-04-10
数据库瓶颈不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务service来看, 就是可用数据库连接少甚至无连接可用,接下来就可以想象了(并发量、吞吐量、崩溃)。IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询会产生大量的IO,降低查询速度->分库和垂直分表第 ......
375
0
0
2022-04-08
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分 ......
324
0
0
2022-04-07
首先我们明确一点,外键约束是一种约束,这个约束的存在,会保证表间数据的关系“始终完整”。因此,外键约束的存在,并非全然没有优点。1. 引言其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条【强制】不得使用外键与级联,一切外键概念必须在应用层解决。但是呢,询问他们原因,大多是这么回答的每次做DELETE 或者UP ......
427
0
0
2022-04-07
本文作者:旺德,阿里云数据库高级开发工程师1.数据库并发控制的作用1.1 事务的概念在介绍并发控制前,首先需要了解事务。数据库提供了增删改查等几种基础操作,用户可以灵活地组合这几种操作,实现复杂的语义。在很多场景下,用户希望一组操作可以做为一个整体一起生效,这就是事务。事务是数据库状态变更的基本单元,包含一个或多个操作(例如多条SQL语句)。经典的转账事务, ......
355
0
0
2022-04-06
软件开发中,数据建模是必不可少的,说到数据库建模工具,很多人想到的第一个工具就是powerdesigner,但是单数据库建模这块来说,给人的感觉还是太重了,并且不支持多种客户端,像我现在用Mac只能望洋生叹了。今天无意中看到一款国产建模工具PDMan,看到简介和界面,就让我精神一震,决定来尝尝鲜!主要支持的功能如下:demo示例支持多个系统客户端(linux ......
379
0
0
2022-04-06
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:系统被切分成了,用户,订单交易,支付几个模块;4.1 如何划分表一个问题:在两台主机上的两个数据库中的表,能否关联查询?答案:不可以关联查询。 分库的原则:有紧密关联关系的表应该在一个库里,相互 ......
401
0
0
2022-04-06