随笔分类 - DB
数据库相关
摘要:Predixy 是一款高性能全特征 redis 代理,支持 redis-sentinel 和 redis-cluster 组件特性: [Predixy 支持的功能](https://github.com/joyieldInc/predixy/blob/master/README_CN.md) 为什么
阅读全文
摘要:### 一:物理全备 优先选择 基于slave 节点全备;当不存在可用的 slave 节点时,选择 master 节点备份 ``` 基于 slave 节点: innobackupex --defaults-file=/etc/my.cnf -S /tmp/mysql.sock --ftwrl-wai
阅读全文
摘要:一直以来,由于 DBA 的误操作或者业务bug,导致误删数据的情况都时有发生。当出现误删数据的情况时,从线上操作日志构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管哪种,都非常费时费力,并且容易 出错。可能有的同学会说从 从库恢复,但实时主从备份只能防止硬件问题,比如主库的硬盘
阅读全文
摘要:一: 优雅分析 种种原因,业务中有时会有批量删 key 的需求,但如何删是一个值得讨论的问题。如题 “优雅” 二字,我们不希望这个操作 影响 Redis 的正常使用,或是性能波动等的问题。 所以,下面我们讨论的内容一切围绕 "优雅" 展开。 一个良好的 Redis 使用习惯,key 的命名应该是有规
阅读全文
摘要:一:Prepere Statement 简介 prepare statement 即 SQL 预处理。什么是 SQL 预处理? 普通 SQL 语句执行的逻辑 需要经过 server 层 的 分析器 (图中圈住的部分) 对 sql 语句进行词法语法解析、sql 编译, 这需要一些性能开销,尤其在一些高
阅读全文
摘要:一:回表概述 关于回表的概念网上已经有很多了,这里不过多赘述。下面我们直接放一张图可能更直观说明什么是回表。 图中 非聚集索引也叫二级索引,二级索引本质上也是 一 个 B+ 树结构,与聚集索引(也叫主键索引)不同的是,非聚集索引并不包含表上的完整数据,当在e二级索引上查询时,实际上数据规模变小了很多
阅读全文
摘要:多大的 key 算大? 阿里云Redis 最佳实践中提到 合理的 Key 中 Value 的字节大小,推荐小于10 KB。过大的 Value 会引发数据倾斜、热点Key、实例流量或 CPU 性能被占满等问题,应从设计源头上避免此类问题带来的性能影响。那么 value Bytes >10kb 可以作为
阅读全文
摘要:MongoDB、MySQL、Oracle、PostgreSQL 等事务型数据库都有 mvcc 的概念。 MVCC: 即多版本并发控制,主要是为了提高数据库的读写性能,让数据库在读写的时候不用去加锁。mvcc 主要是处理读请求,这个读指的是快照读,而不是当前读,快照读就是普通的 select 查询。而
阅读全文
摘要:为了支持各个国家的不同语言,MySQL 从4.0 版本开始支持了很多种字符集,且每种字符集支持了 N 多种排序规则。我们可以在建表的时候指定字符集的排序规则,不指定时会有一个默认规则。 字符集和排序规则总是一起使用的,每个排序规则都是针对某个特性的字符集,和其他字符集没有关系。 只有基于 字符串 的
阅读全文
摘要:MongoDB 从4.0 版本开始 副本集支持多文档事务,4.2 版本开始分片集群也支持多文档事务。单个集合的单个文档事务 在 1.x 就支持。 以下是跟 mongo 事务相关的一些概念: 1. Write Concern 参数格式: { w: <value>, j: <boolean>, wtim
阅读全文
摘要:数值类型 floot(M,N) double(M,N): 浮点型 M 表示显示位数,即宽度 N 表示小数部分的精确位数 但是,这两种浮点型都是非精确类型。对于数值类型的高精度需求,显然 floot,double 不能满足。 高精度通常用 decimal 类型 decimal(M, N): 高精度类型
阅读全文
摘要:使用 select ... INTO OUTFILE 语句导出数据:--single-transaction 导出数据到 /root/mytable.sql SELECT * FROM mytable INTO OUTFILE '/root/mytable.sql'; 你可以通过命令选项来设置数据输
阅读全文
摘要:看到有一些博客说 between and 有不含边界的情况,于是测试了一把,记录如下。先说结论:between and 不存在不含边界的情况 1. between and 是包含边界的 id between 3 and 5 等价于 id >=3 and ⇐5; mysql> select * fro
阅读全文
摘要:一、全局锁 mysql> flush table with read lock; FTWRL 会对整个实例加只读锁。会阻塞所有线程读以外的所有操作。查看线程状态 State: Waiting for global read lock 通常 对全库做逻辑备份(mysqldump)时,会加全局锁。 (1
阅读全文
摘要:redis 支持五种常见的基本数据类型。无论是哪种数据类型,redis 的 key 都是字符串,我们在讨论数据类型时,说的是 value 的不同类型。Redis 丰富的数据类型,使得Redis 可用于缓存,事件发布订阅,或消息队列。 | 类型 | value | 读写能力 | | | | | |st
阅读全文