随笔分类 - 数据库
摘要:相关命令: show engines; 查看数据库支持的引擎 show variables like '%storage_engine%'; 查看数据库默认的引擎 select @@global.tx_isolation; 查询数据库的隔离级别 show variables like 'innodb
阅读全文
摘要:系统调优参数 一些比较重要的参数: back_log:back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。如果MySql的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等
阅读全文
摘要:介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。 Redis 集群不支持需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低 Redis 集群的性能,
阅读全文
摘要:作用 Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。 主要提供了配置提供者,通知,哨兵的监控和自动故障转移功能。哨兵的核心功能是主节点的自动故障转移。 下面是Redis官方文档对于哨兵功能的描述: 监控(Monitoring):哨兵会不断地检查主节点和从节点是否运
阅读全文
摘要:主从复制概述 在Redis客户端通过info replication可以查看与复制相关的状态,对于了解主从节点的当前状态,以及解决出现的问题都会有帮助。 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave
阅读全文
摘要:Redis高可用概述 高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999% 等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。
阅读全文
摘要:了解 Redis 的 5 种对象类型(字符串、哈希、列表、集合、有序集合)的用法和特点的基础,了解 Redis 的内存模型,对 Redis 的使用有很大帮助,例如: 估算 Redis 内存使用量。内存的使用成本相对较高,使用内存不能无所顾忌;根据需求合理的评估 Redis 的内存使用量,选择合适的机
阅读全文
摘要:转载:https://mp.weixin.qq.com/s/FkoOMY8_vnqSPPTHc2PL1w 行式数据库(关系型数据库) 行式数据库有如下几个缺点: 大数据场景下 I/O 较高,因为数据是按行存储,即使只针对其中某一列进行运算,关系型数据库也会将整行数据从存储设备中读入内存,导致 I/O
阅读全文
摘要:一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt),但是结果只返回最后一张虚拟表。 JOIN的执行顺序 以下是JOIN查询的通用结构: 它的执行顺序如下(SQL语句里第一个被执行的总是FROM子句): FROM:对左右两张表执行笛卡尔积,产生第一张表vt1。行数为n*m(
阅读全文
摘要:为什么使用redis 主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。 性能 在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放
阅读全文
摘要:基础规范 必须使用InnoDB存储引擎 支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 必须使用utf8字符集,必要时候使用utf8mb4 通用,无乱码风险,汉字3字节,英文1字节 utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它 禁止使用存储过程、视图、
阅读全文
摘要:排他锁(Exclusive Lock) 排他锁(Exclusive Lock) , 简称X锁。 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 规则1:写一个数据之前加X锁,
阅读全文
摘要:Undo 日志 比如A有200块钱, B有50 块钱,现在A要给B转100块” 。 (1) 开始事务 T1 (假设T1是个事务的内部编号) (2) A余额 = A余额 -100 (3) B余额 = B余额 + 100 (4) 提交事务 T1 会对此事务记录Undo的日志文件,记录下事务开始之前的他俩
阅读全文
摘要:Kafka架构 一个典型的Kafka体系架构包括若干Producer(可以是服务器日志,业务数据,页面前端产生的page view等等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer (Group),以及一个Zookeeper集群。Kaf
阅读全文
摘要:区块链特点 一种特殊的分布式数据库,没有管理员,彻底无中心 写入数据比较慢,要求实时的场景不适配 能耗比较大,选择使用时需评估成本和目的(公益还是盈利) 所有节点都全量存储数据,并同时支持读写 区块链的组成 区块链由一个个区块组成,区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两
阅读全文
摘要:ACID 理论 关系型数据库具有解决复杂事务场景的能力,关系型数据库的事务满足 ACID 的特性。 Atomicity:原子性(要么都做,要么都不做) Consistency:一致性(数据库只有一个状态,不存在未确定状态) Isolation:隔离性(事务之间互不干扰) Durability: 永久
阅读全文
摘要:explain命令的使用及相关参数说明。 https://dev.mysql.com/doc/refman/5.7/en/explain-output.html EXPLAIN Output Columns id id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行
阅读全文
摘要:谈谈互联网后端基础设施 http://www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/ 为什么使用消息队列 解耦:一个事务,只关心核心的流程,需要依赖其他系统但不那么重要的事情,有通知即可,无须等待结果。 异步:指的是两个系统的状态保持一致
阅读全文
摘要:垂直分表:垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。通常情况,某个表中的字段比较多,可以新建立一张“扩展表”,将不经常使用或者长度较大的字段拆分出去放到“扩展表”中。 ps:在字段很多的情况下,拆分开确实更便于开发和维护(曾见过
阅读全文
摘要:ACID特性 原子性(Atomicity)事务必须是一个不可分割的整体,就像我们在化学课里学到的原子,原子是构成物质的最小单位。 一致性(Consistency)执行完数据库操作后,数据不会被破坏。打个比方,如果从 A 账户转账到 B 账户,不可能因为 A 账户扣了钱,而 B 账户没有加钱吧。 隔离
阅读全文