Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

最近自己做的项目中用到了redis, 特此记录一下redis的持久化相关内容。 redis虽说是内存数据库,但其实自己是有持久化的,它的持久化有两种方式:RDB持久化和AOF持久化。 RDB持久化会在一个特定的时间间隔进行一个快照文件的保存。 AOF持久化会记录每一个服务器收到的写操作。当服务重启时,这些操作记录会被重新执行从而重建数据。 从上面的描述可以发现一点,RDB的快照持久化方式并不...

先看锁的分类: 按照是否共享,可以分为: 共享锁(读锁) 排他锁(写锁) 按照锁的粒度,可以分为: 表锁 行锁 要谈锁,我认为是要结合事务隔离级别一起谈的,MySQL的事务隔离级别有: Read Uncommitted Read Committed Repeatable Read Serializable InnoDB默认的是行锁,而且行锁是加给索引的,所以如果没有索引,那也就只...

讨论MySQL的MVCC的同时还应该讨论MySQL中的锁,不过本文先就MVCC进行讨论。 MVCC叫做多版本并发控制,它主要是为了实现多个事务之间的隔离性而提出的一种更高效的方法,为什么说更高效呢,因为锁也可以实现,只不过相比之下比较低效。 MVCC的核心有三: MySQL每一行记录的隐藏列之DATA_TRX_ID MySQL每一行记录的隐藏列之``DATA_ROLL_PTR` READ ...

提到MySQL索引,都会讲到B树和B+树,今天来梳理一下。 最开始是二叉查找树,但是这种树不平衡,有时候会退化成一条链表,使得查找时间边长,于是就有了二叉平衡树。 理论上讲,二叉平衡树已经能满足一些查找需求了,为什么还要有B树呢? 因为数据库在磁盘中,而查找的时候需要读一部分数据到磁盘中,这就涉及到了IO,IO的时候是以磁盘块为单位读取的,或者说是以页为单位。我们使用树这种数据结构,一个磁盘...

乐观锁和悲观锁 悲观锁 悲观锁对数据修改持有悲观态度,认为数据很容易被修改,所以在修改数据前会先给加锁,效率较低。 乐观锁 乐观锁假设一般情况下不会造成数据冲突,所它只在事务提交更新的时候,才去检测是否有冲突。如果冲突了则给用户返回一定的信息让用户自己去处理。 乐观锁并不是真正的加锁,通常,它可以通过版本号,或者时间戳等来判断是否发生了冲突。比如添加版本号,每次修改数据时都会带上版本号,如...

关系型数据库与MongoDB术语对比 关系型数据库 MongoDB 表 集合 行 文档 列 字段 表join 内嵌 主键 主键(由MongoDB提供默认的key_id) 创建数据库 use DATABASE_NAME 得到 记一次在mapreduce里填的坑 mapreduce最初是由谷歌提出的框架,但已在多种平台上实现。分为map和reduce两...

###MySQL逻辑架构 redo log & bin logMySQL的每次数据更改都不会立即写入磁盘的,因为这是一个大量IO的过程,耗时耗力,一个可取的操作时我先把当前的操作记录在日志里,等到夜深人静操作系统空闲的时候,在通过日志把相关的修改持久化。 所以,机智的MySQL设计者们就提出了一个叫做WAL(write ahead logging)的技术。 每当对数据库进行修改操作...