数据库学习笔记
文章平均质量分 60
zzd2018
笔记、总结与感悟
展开
-
WAL: Write-Ahead Logging
WAL: Write-Ahead Logging先写日志,再写磁盘。具体说,当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里面,并更新内存,这个时候更新计算完成了。同时InnoDB引擎会在在系统比较空闲的时候,将这个操作记录更新到磁盘里。WAL机制主要得益于两个方面redo log 和 binlog 都是顺序写,磁盘的顺序写比随机写速度要快;组提交机制,可以大幅度降低磁盘的 IOPS 消耗。MySQL中有以下日志文件,分别是: 1:重做日志(redo log)原创 2021-04-06 20:53:40 · 233 阅读 · 0 评论 -
数据库分库分表
转自阿里技术公众号,地址:https://mp.weixin.qq.com/s/X6FI9Ci7ZXGDNDCkh2VnNA先说一下我的个人感受,就是我感觉可以与redis进行类比。主从复制-读写分离可以类比于redis的主从复制-哨兵模式,然后分库分表可以类比于redis的集群模式。总得来说,我感觉对于大规模数据的优化,主从复制-读写分离算是初级的优化,然后如果数据规模进一步庞大和QPS变得更加巨大的话,就要使用分库分表了。1 什么是分库分表?其实就是字面意思,很好理解: 分库:从单个.转载 2021-03-22 16:36:09 · 221 阅读 · 0 评论 -
Redis的Sentinel(哨兵)模式
首先,我先说下我对于sentinel模式的理解:我觉得就是Redis的主从复制的高可用解决方案,什么意思呢?就是当主服务器挂了,不再用人手工操作的方式切换主从服务器,sentinel服务器会自动的检测出挂了的主服务器,并且自动完成主从服务器的切换。同样的,因为书中讲到了大量的实现细节,我觉得不用记录得这么详细,所以这里只写一些重点内容。想要详细了解实现细节的话还是去看书的第16章吧。Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个sentinel实例(其实就是一个处于sentin原创 2020-11-22 16:29:08 · 168 阅读 · 0 评论 -
Redis的主从复制功能
(这部分我不会写得太详细,因为涉及到大量的实现细节,如果想仔细了解的话,就去看书的第15章吧!!!)在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称作“数据库状态一致”,或者简称“一致”。Redis2.8以前的复制功能不能高效地处理断线原创 2020-11-22 15:07:27 · 93 阅读 · 0 评论 -
Redis的事件
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。 时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件.原创 2020-11-08 22:03:11 · 99 阅读 · 0 评论 -
Redis设置键的生存时间或过期时间
通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。与EXPIRE命令和PEXPIRE命令类似,客户端可以通过EXPIREAT(多了个AT)命令或PEXPIREAT命令,以秒或者毫秒精度给数据库中的某个键设置过期时间。过期时间是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键。虽然有多种不同单位和不同形式的设置命令.原创 2020-11-01 16:40:57 · 627 阅读 · 0 评论 -
Redis的数据库概念
在初始化服务器时,程序会根据服务器状态的dbnum属性来决定应该创建多少个数据库。dbnum属性的值由服务器配置的database选项决定,默认情况下,该选项的值为16,所以Redis服务器默认会创建16个数据库。每个Redis客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。默认情况下,Redis客户端的目标数据库为0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库。为了避免对数据库进行误操作,在执行Redis命令,特原创 2020-10-31 22:23:25 · 465 阅读 · 0 评论 -
Redis的对象系统
下面的内容来自《Redis设计与实现》这本书。Redis内部自己实现的主要数据结构有简单动态字符串(SDS)、双端链表、字典、跳跃表、整数集合和压缩列表。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种上面所述的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的另一原创 2020-10-31 16:29:56 · 85 阅读 · 0 评论 -
数据库与大数据(数据仓库)的区别
数据库主要用来存业务数据,因此只存当前的数据,从而存储的数据不算特别多,而且需要频繁的读和写。所以说,数据库主要用于OLTP,也就是用于处理业务逻辑。因此后端工程师会与数据库打交道。而大数据,我这里特别指数据仓库,其实大数据和数据仓库有什么不同我也不太懂,但是感觉大数据技术的最大应用就是数据仓库了吧。数据仓库主要用来存历史数据,这里的历史数据包括业务数据的历史数据,当然了,还会包括其他类型的数...原创 2020-03-05 15:43:56 · 5899 阅读 · 0 评论 -
Redis集群相关内容
Redis的主从复制机制包括两种模式,分别是普通的主从模式和Sentinel模式(哨兵模式)。主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave只能提供读服务。这种机制主要提供读写分离和容灾恢复的功能。具体操作:通过slaveof命令,从库配置:slaveof 主库IP 主库端口。每次与master断开之后,都需要重新连接,除非你配...原创 2020-03-04 15:06:24 · 125 阅读 · 0 评论 -
Redis事务相关
Redis部分支持事务,不支持完整的事务定义(具体原因下面说明)。Redis事务命令:Redis事务的执行有五种情况:正常执行:用MULTI开启一个事务,输入多个命令,将多个命令入列到事务中,用EXEC执行事务中的命令。 放弃事务:其他的都与正常执行相同,就是最后输入了DISCARD命令放弃执行这个事务。 全体连坐:如果输入的命令中,有命令有语法错误,就会导致整个事务无法执行。...原创 2020-03-01 21:07:22 · 106 阅读 · 0 评论 -
Redis持久化相关内容
Redis的持久化方式分为两种,分别是RDB(Redis DataBase)和AOF(Append Only File)。RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是通常说的Snapshot快照,它恢复时是将快照文件直接读到内存 里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用 ...原创 2020-02-24 21:03:12 · 103 阅读 · 0 评论 -
Redis的五大数据类型
Redis与memcached相比,一大优势就是支持更多的数据类型,memcached的value只支持string类型,而redis的value支持五种数据类型。注意啊,key的话都只支持字符串。String(字符串):string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 string类型是二进制安全的。意思是redis的...原创 2020-02-21 16:33:57 · 84 阅读 · 0 评论 -
MySQL锁相关内容
MySQL的表锁使用 lock table 表名 (read | write),...,语句来添加读锁或者写锁。通过unlock table;语句来释放所有表锁。在对表加了表锁时,这个连接就不能再操作其他表了(包括读和写)。简而言之,就是读锁会阻塞写,但是不会阻塞读。而写锁则会把读和写都阻塞。还有一点就是网上都说表锁不会造成死锁。我一直对此感到疑惑,我就想一个连接锁了一个表,然后另一个连接锁了...原创 2020-02-19 14:44:20 · 104 阅读 · 0 评论 -
MySQL索引相关内容
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。索引的优势:(1)类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本;(2)通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。索引的劣势:(1)虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE...原创 2020-02-14 16:41:00 · 103 阅读 · 0 评论 -
MySQL架构以及执行流程
MySQL的存储引擎是插件式的,支持多种存储引擎。原创 2020-02-14 12:01:20 · 79 阅读 · 0 评论 -
MySQL相关学习笔记
grant all privileges on *.* to root@'%' identified by '123';#授予通过网络方式登录的的root用户 ,对所有库所有表的全部权限,密码设为123。其中,all privileges表示所有权限,比如有select,insert,delete,drop等权限。*.*表示所有库所有表,前面的*表示所有库,后面的*表示所有表。%表示允许所有...原创 2020-02-13 22:01:00 · 70 阅读 · 0 评论