
数据库技术
文章平均质量分 75
lqadam
这个作者很懒,什么都没留下…
展开
-
MySql 日志 简单总结,很简单的那种
文章目录参考:undo log作用:如何做:redo log作用如何做LSN 和 CheckPoint作用binlog作用如何做redo log和binlog 的区别参考:https://www.cnblogs.com/wy123/p/8365234.htmlhttps://www.cnblogs.com/wy123/p/8353245.htmlhttps://www.cnblogs.c...原创 2019-12-08 16:19:27 · 174 阅读 · 0 评论 -
Log Struct Merge Tree
文章目录参考LSM Tree 和B+Tree的不同之处LSM Tree 基本算法合并操作LSM Tree的问题针对上述问题 LSM Tree工程实践上的优化参考https://wiesen.github.io/post/leveldb-introduction/http://www.benstopford.com/2015/02/14/log-structured-merge-trees/...原创 2019-12-08 16:18:31 · 452 阅读 · 0 评论 -
redis 服务器
redis服务器服务器启动初始化过程初始化redis Server结构体的状态:initServerConfig函数内。包括设置运行Id,设置默认运行频率,设置配置文件路,设置端口号,设置RDB和AOF持久化条件,初始化lru时钟和创建命令表(即客户端传来的命令字符串和实际执行命令的函数等信息结构体之间的哈希表,字符串不区分大小写)。载入配置项:通过终端输入和配置文件的内容,替换s...原创 2018-03-03 12:54:34 · 448 阅读 · 0 评论 -
redis 复制
复制的问题复制流程redis的复制,主要是两步: 1. 同步:全量复制RDB文件。从服务器发送SYNC命令,主服务器生成RDB文件,传输给从服务器 2. 命令传播:增量同步新的写命令。主服务器将新的写命令发送给从服务器,从而一直保持二者的数据同步 复制的问题复制如果一直正常最好,如果出现掉线的问题,那么重新连接之后,如何再次同步呢? 在旧版(2.8以前),每次...原创 2018-03-03 12:55:33 · 467 阅读 · 0 评论 -
redis sentinel(哨兵)
Sentinel原理Sentinel 监视流程sentinel检查下线主观下线:客观下线:故障转移:选举领头sentinel:故障转移 Sentinel是redis高可用的方案,通过设立一个或多个Sentinel监视服务器,可以在主服务器下线的时候及时选举切换到从服务器,保证可用性。 Sentinel本身也是服务器,只是运行在特殊模式下,监听其他...原创 2018-03-03 12:56:47 · 421 阅读 · 0 评论 -
redis 集群 相关知识点
节点clusterNode结构体clusterLink结构体clusterState结构体集群分片槽信息存储计算键属于哪个槽集群分片后键值的操作集群分片后,数据库使用的不同重新分片:使用redis-trib redis集群管理软件重新分片期间的键值对操作ASK错误和MOVED错误集群复制和故障转移集群的复制集群的故障检测集群的故障转移集群的消息...原创 2018-03-03 12:57:59 · 414 阅读 · 0 评论 -
redis 发布与订阅
命令列举SUBSCRIBE <channel [channel]>:订阅频道,以接收发送到这个频道的消息PUBLISH <channel> <message>: 该命令会向频道发送消息,所有订阅频道的订阅者都会收到消息PSUBSCRIBE <channel_pattern>:这是接受正则表达式的SUBSCRIBE命令,可以订阅符合某个模式的...原创 2018-03-03 12:58:40 · 285 阅读 · 0 评论 -
redis lua脚本相关知识点
redis的lua环境实现流程EVAL执行原理命令对于脚本的复制redis的lua环境实现流程服务器调用C的API创建一个Lua环境将一些基础函数库导入到Lua环境中,并删除能载入外部文件的函数loadfile创建redis函数的全局表格。函数包含了redis.call和redis.pcall、redis计算has值的函数,redis日志函数和返回错误的函数使...原创 2018-03-03 13:00:39 · 307 阅读 · 0 评论 -
redis 慢查询、位数组和事务
慢查询日志配置慢查询日志慢查询日志查看慢查询日志实现monitor位数组命令实现BITCOUNT的实现事务事务的执行流程实现watch命令慢查询日志配置慢查询日志选项slowlog-log-slower-than用于配置执行时间大于多少毫秒的命令会记录慢查询日志 选项slowlog-max-len用于配置服务器最多保存多少条慢查询...原创 2018-03-03 13:02:43 · 329 阅读 · 0 评论 -
redis 排序
sort命令可对集合、列表和有序集合排序,对有序集合排序,默认使用集合的key而不是score作为排序依据命令格式:SORT <key> [ALPHA] [ASC|DESC] [BY <by-pattern>] [LIMIT <offset> <count>] [GET <get-pattern> [...<get-patte...原创 2018-03-03 13:03:22 · 1171 阅读 · 0 评论 -
SQL语句:传入一个集合A,返回A中不在数据库表中的数据
问题解决方法关联讨论:写代码碰到一个不知道用SQL语句怎么表示的逻辑问题问题如下,现有一个集合A,我想查数据库,查出A中有哪些元素,不在数据库的表里,并且把这些元素返回给我(自然,返回结果是A的子集)。解决方法思路是使用临时表: 将集合A的所有元素拼成一个临时表,然后使用not in,查找数据库表内所有不在临时表中的数据。 写MyBatis的代码...原创 2018-05-31 20:07:58 · 4826 阅读 · 3 评论 -
redis 客户端
redis客户端客户端通用属性(即不为特别功能设置的属性)客户端何时关闭redis客户端redis连接到服务器的客户端会在redisServer结构体内形成一个redisClient的链表保存客户端通用属性(即不为特别功能设置的属性)名字:默认为空,只起别名标识的作用套接字描述符fd:客户端正在使用的套接的描述符,如果是伪客户端(AOF和lua脚本客户端)...原创 2018-03-03 12:52:56 · 1247 阅读 · 0 评论 -
redis 事件
redis 事件文件事件要点时间事件时间事件 结构时间事件的实现:文件事件和时间事件的协同处理redis 事件redis分为文件事件和时间事件两类事件,其中,文件事件为socket产生的相应事件,与客户端对数据的读写有关系,时间事件是定时触发的事件,与服务器的定时任务,过期键值对的删除有关。 文件事件基于reactor模式(主线程轮训多个请求...原创 2018-03-03 12:51:21 · 259 阅读 · 0 评论 -
redis 数据库结构、RDB备份和AOF备份
数据库结构键空间 字典过期字典redis备份和复制机制中过期键值对的行为RDB持久化RDB持久化的保存手动持久化自动持久化RDB持久化的恢复RDB文件的格式databases结构:key_value_paires结构:AOF持久化AOF持久化的实现:命令追加、文件写入、文件同步命令追加文件写入与同步AOF文件的载入AOF文件重写AO...原创 2018-03-03 12:50:24 · 343 阅读 · 0 评论 -
InnoDB MVCC 要点摘录
MVCC(多版本并发控制,MultiVersion Concurrency Control)很多数据库都实现了MVCC,但是因为没有统一标准,实现细节不同,表现也不同MVCC可以认为是行级锁的一个变种,为了获得并发性能的同时,尽量减少加锁,管理锁带来的性能损耗MVCC是通过保存数据库记录的快照来实现的,也就是说,同一条记录,在使用MVCC后,可能在数据库的存储引擎中,对用多个记录,但是版本号不原创 2017-11-19 00:36:19 · 331 阅读 · 0 评论 -
数据库索引类型及原理记要
索引的数据结构B-Tree及其变种:值按顺序存储,并且每一个叶子节点到根的距离相同。优点:因为值按顺序存储,所以适合范围查找,适合全值匹配和最左前缀匹配,对于多列索引支持精确匹配某一列并范围匹配另外一列;缺点:对于多列索引,不从索引的最左列查询,不能使用索引,不能跳过索引中的列,对某个列使用范围查询,其后所有列无法使用索引优化哈希索引:基于哈希表实现,因为哈希,所以只能精确匹配。缺点:无法存储字原创 2017-11-19 00:38:58 · 628 阅读 · 0 评论 -
SQL explain信息说明
type字段:表示查询的方式all:全表扫描index:通过索引得到查询的数据,使用索引顺序做排序,只有索引的列顺序和order by子句的顺序完全一样,并且所有列的排序方向都一样的时候,MySql才能使用索引来对结果做排序range:以范围的方式扫描索引ref:使用非唯一索引eq_ref:使用唯一索引查询extra字段:附加信息using index:通过索引的到数据(覆盖索引)u原创 2017-11-19 00:39:31 · 388 阅读 · 0 评论 -
MySql复制与日志 原理摘要
关于MySql复制 概述MySql的复制主要使用二进制日志来完成。 原理主数据库通过开启二进制日志(sync_binglog=1),将每次的数据更改事件写入二进制日志,备份数据库通过新开的IO线程不断读取主数据库的二进制日志到自己的中继日志,然后重放事件到自身,来实现复制,同时,备份数据库也可以开启二进制服务器,再次同步给其他数据库。 几点注意: 1. 二进制日志的记录分为两种:基于SQL语句原创 2017-11-19 00:40:50 · 445 阅读 · 0 评论 -
MySql查询过程 几点记要
客户端和服务器的通信:是半双工的,同一时刻,只有一端能向另一端发送数据,而且这时一端没办法通知另一端关闭连接,停止发送。MySql的客户端会缓存服务器传来的数据,但有时,因为传输的数据过大,为了不让缓存占据内存,我们可以设置不使用缓存查询缓存:只有当查询的语句完全一致(通过哈希查询实现,大小区分)才会命中,命中后直接检查用户权限,之后直接返回数据给客户端查询优化处理:语法解析和预处理:根据SQL生原创 2017-11-19 00:42:27 · 467 阅读 · 0 评论 -
redis 数据结构 简单动态字符串和链表
假期在家,看了《Redis 设计与实现》,将其整理成了md。 想来,有两个月左右没有写博客了,将笔记作为一个系列更上来简单动态字符串(simple dinamic string,即sds) 用来替代c的字符串实现结构:要点:buf[]的大小使用sds,而不使用string的好处redis内的使用链表结构:要点redis内使用简单动...原创 2018-03-03 12:10:59 · 247 阅读 · 0 评论 -
redis 数据结构 字典
哈希表和字典结构:要点rehash时机redis内的使用哈希表和字典我就不明白了,c里面没有,c++的stl里有啊,redis为什么要自己实现结构:/** * 哈希节点**/typedef struct dictEntry{ void *key;//键,任意类型 union{//值,三选一,或者是自定义val,或者是无符...原创 2018-03-03 12:11:57 · 284 阅读 · 0 评论 -
redis 数据结构 跳表
跳表结构:要点:redis内的使用跳表要先有跳表的数据结构基础: 跳表是链表的一个变种,通过增加多余的指针,将单向链表变成多向链表,进而使跳表的查询效率和平衡二叉树看齐(平均o(logN),最坏o(N)),而且较之二叉树实现方便。 而跳表本身,有一些比较迷的实现策略:比如,新增节点的层次是通过随机数(抛硬币)指定的,存在一个随机概率,这在redis内,概率...原创 2018-03-03 12:12:55 · 790 阅读 · 0 评论 -
redis 数据结构 整数集合和压缩列表
整数集合结构:encoding 说明要点redis内的使用压缩列表结构一个压缩列表包含entry结构要点:redis内使用整数集合结构:typedef struct intset{ uint32_t encoding;//编码,表明content内保存的整型的类型 uing32_t length;//数组的...原创 2018-03-03 12:14:15 · 556 阅读 · 0 评论 -
redis 数据结构 redis对象
对象结构type取值encondig取值和对应的ptr类型对象和编码的对应关系(一对多)对象共享对象的空转时长部分对象实现要点各个对象encoding选择的策略字符串对象列表对象哈希对象集合对象有序集合内存回收策略对象redis将内部的数据结构封装,包含在redis对象中,redis有五种对象:字符串对象、列表对象、哈希对象、集合...原创 2018-03-03 12:25:22 · 335 阅读 · 0 评论 -
命令行开启mysql的通用日志
关于mysql的日志 在我编写那个小工程的过程中,有一句sql语句的执行总是有问题,然而,因为使用的Spring的JdbcTemplate,内部封装的是PreparedStatement,sql语句是参数化的,我看不到最后被执行的sql语句是什么,而手写了一遍sql语句执行竟然是正常的。这个时候,怎么办,怎么调bug? 我想到的一种方法是,在数据库侧查看执行的sql语句,而这,就需要数据库开启日原创 2017-05-13 21:21:21 · 5102 阅读 · 0 评论