数据库
文章平均质量分 83
keYuK0
永远保持好奇心和深入探究的精神,它是我们不断进步的核心驱动力
展开
-
Redis缓存不一致的问题(五)
缓存不一致的情况有两种:Redis缓存中是旧值;数据库中值是旧值;缓存一致性需要保证的是,当缓存中有值的时候,数据库的值必须与缓存一致。根据是否接收写请求,可以将缓存分为读写缓存和只读缓存。两种发生缓存不一致的情况不同,需要分开来应对。在只读缓存中,新增数据会直接写到数据库中,不会操作缓存,所以不会出现缓存不一致。删改数据时,需要删除数据库和缓存中的数据,在删改数据库和缓存时,无论哪个先后,中间出现故障都会产生旧值,即缓存不一致的情况。如何解决数据不一致重试机制可以将要删除的缓存值或者原创 2021-05-27 23:46:26 · 344 阅读 · 0 评论 -
Redis常见的问题:缓存雪崩、缓存击穿、缓存穿透难题(四)
Redis 缓存异常常见的问题有缓存雪崩、缓存击穿、缓存穿透。这三个问题一旦发生,请求量就会堆积到数据库层。如果请求的并发量大,那么就会导致数据库宕机或是故障。缓存雪崩缓存雪崩指的是,大量的应用请求无法在Redis缓存中处理,大量请求会发送到数据库层,导致数据库层的压力激增。引发雪崩的原因有两个。一是因为,缓存中有大量的缓存同时过期失效,导致大量请求无法得到处理;还有是因为,Redis缓存实例发生故障宕机了,无法处理请求,大量请求就会发送到数据库层。针对缓存同时失效的问题,有这样的解决方案。一原创 2021-05-15 21:40:16 · 146 阅读 · 0 评论 -
Redis的持久化机制AOF与RDB(三)
Redis的持久化机制AOF与RDB 因为Redis是内存数据库,意味着一旦服务器宕机或者其它原因引起的关机,内存中的数据将全部丢失。为快速恢复,Redis也有相应的持久化策略。Redis持久化主要有两大机制,即AOF(appen only file)日志和 RDB快照。AOF日志 在关系型数据库中,有个叫WAL的技术,即在实际记录数据前,会先把修改的数据记到日志文件中,以便故障时的数据恢复。而AOF是写后日志,即先执行命令将数据写入内存,然后才记录日志。为什么Redis要先写内存再写日志呢?原创 2021-05-13 17:38:03 · 189 阅读 · 0 评论 -
Redis常用的基本操作命令(一)
Redis 简介Redis是一个速度非常快的非关系数据库,它可以存储键(key) 与5种不同类型的值(value)之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片1来扩展写性能。Redis的数据结构 Redis共有5种数据结构,分别为字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。1. 字符串(STRING)通过key-value的方法去存储字符串,字符串可以存储字符串、整数、浮点数这原创 2021-04-21 23:32:25 · 200 阅读 · 0 评论 -
Redis底层数据结构和reHash过程(二)
Redis底层数据结构 Redis常用的类型有STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)Redis 键值对存储的结构 为了实现从键到值的快速访问,Redis使用了哈希表来保存所有键值对。键对应Redis设置的Key,而值对应的并不是值本身,而是指向具体值的指针。使用哈希表的最大好处就是可以用O(1)的时间复杂度快速找到键值对。但既然是哈希表,那么必然会有着哈希冲突的问题。 哈希冲突即指的是,当两个key的哈希值和哈希桶计算对应关系时,正好原创 2021-04-21 23:30:19 · 317 阅读 · 0 评论 -
MySQL语句的执行流程
MySQL语句的执行流程MySQL 可以分为Server 层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖了MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。Server层连接器连接器负责跟客户端建立连接、获取权限、维持和管理连接。连接命令如原创 2021-04-18 13:14:32 · 161 阅读 · 1 评论 -
MySQL的redo log和bin log及相关问题
MySQL的redo log和bin logredo logredo日志即是重做日志,用于存储事务对数据库操作的记录,当数据库发生崩溃重启时,可以通过该日志进行恢复。 MySQL 中,如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到那条记录,然后再更新,整个过程IO成本、查找成本都很高。redo日志的出现正是为了解决这个问题的。 执行更新操作时,MySQL使用的技术是WAL(wirte-Ahead logging)技术,它的关键点在于先写日志,再写磁盘。具体来说,InnoDB引擎会先把记录写原创 2021-04-18 13:11:53 · 227 阅读 · 1 评论 -
理解数据库之悲观锁和乐观锁
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。而乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。概念乐观锁和悲观锁可以说是一种思想,一种人们为了解决并发控制带来的问题而定义好的策略。这里需要注意的是千万不能将乐观锁和悲观锁的概念狭义地理解为数据库中提供的锁机制,例如行锁、表锁、...原创 2019-06-17 23:30:09 · 292 阅读 · 0 评论 -
理解数据库之索引类型
索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。常见的索引类型有:哈希表、有序数组、搜索树哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过...原创 2019-06-17 23:27:42 · 276 阅读 · 0 评论 -
理解数据库之设计范式
1. 第一范式(指原子性,不可分割)数据库第一范式是指数据库中的每一列都是不可分割的原子值。例如设计地址字段时,如有需求需要经常访问地址中的城市,街道等信息时,就要把该字段继续分割。2. 第二范式(指非主属性必须完全依赖于主属性)数据库第二范式是指所有非主属性列都应该完全依赖于主属性,而不是只依赖主属性的一部分,这是在联合主键的情况下。在一个订单表中,一个订单可包含多个产品,那么该订单表的主...原创 2019-06-17 23:31:51 · 177 阅读 · 0 评论 -
理解数据库之Mysql的共享锁与排他锁、行锁与表锁
共享锁共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。注意区别共享锁就是指多个事务只能读数据而不能修改数据...原创 2019-06-19 23:34:29 · 1082 阅读 · 0 评论 -
理解数据库之事务与其隔离级别
一、事务的四大特性原子性原子性是指事务包含的操作要么全部成功,要么全部失败回滚。一致性一致性是指事务必须使数据库从一个一致性状态变换为另一个一致性状态,也就是说事务执行之前和执行之后都必须处于一致性状态。以A、B两个用户转账为例,无论如何转账,两个用户的总金额和是不变的。隔离性隔离性是指当多个用户访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务所干扰,多...原创 2019-06-19 23:32:53 · 216 阅读 · 0 评论 -
mysql必知必会之sql语句用法
1. DISTINCT —> 去重select distinct name from user;distinct 不能部分使用,该关键字应用于指定的所有列而不单单是前置列。2. limit 与 offset —-> 偏移开始的位置select * from user limit 3; //指检索行数为3行select * f原创 2018-08-23 11:44:14 · 306 阅读 · 0 评论