架构
文章平均质量分 91
arthasking123
这个作者很懒,什么都没留下…
展开
-
《高性能MySQL》 第四章 Schema与数据类型优化 读书笔记
Schema与数据类型优化 选择优化的数据类型 简单就好 所占用的空间和CPU处理周期数更少 避免NULL 允许为NULL的索引占用更多的空间(每个索引占用额外1个BIT) 可以考虑NULL的情况:列值很稀疏(NULL值很多的情况) 整数类型 TINY SMALL MEDIUM INT BIG 实数类型 DECIMAL只是一种存储格式,MySQL5.0以上支持存储65位,在运算时仍会转为double 只在进行精确的小数计算时建议选择DECIMAL,如果数据量较大时,可以使用BIGINT计算避.原创 2020-12-02 18:33:08 · 181 阅读 · 0 评论 -
《高性能MySQL》 第三章 服务器性能剖析 读书笔记
性能优化 基于响应时间 性能剖析 测量任务所花费的时间 对结果进行统计和排序,将重要的任务排到前面 时间分类 执行时间 等待时间 理解性能剖析 值得优化的查询 一些只占总响应时间比重很小的査询是不值得优化的 如果优化的成本大于优化的收益,则应停止优化 异常情况 对于某些执行时间过长影响用户体验 被隐藏的细节 如平均值会掩盖部分异常的情况 参考工具:pt-query-digest 性能测量工具 New Relic、instrumentation-for-php 剖析MySQL查询 剖析服.原创 2020-11-27 15:28:14 · 158 阅读 · 0 评论 -
《高性能MySQL》 第一章 MySQL架构与历史 读书笔记
MySQL架构与历史 逻辑架构 连接处理、安全、授权验证 査询解析、分析、优化、缓存以及所有的内置函数,存储过程、触发器、视图 存储引擎 并发控制 存储引擎 SHOW TABLE STATUS查看表基础信息 INNODB 4.1后数据和索引分开存放 采用MVCC支持高并发,默认隔离级别可重复读,间隙锁防止幻读 二级索引包含主键,因此主键如果越大,索引所占用的空间也越大 读取优化策略 读取磁盘时进行可预测性预读 内存中创建hash索引以加速读操作的自适应哈希索引 加速插入操作的插入缓冲区(.原创 2020-11-12 18:05:17 · 146 阅读 · 1 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第3章 存储与检索 读书笔记
存储引擎 面向日志 问题:数据量大时由于需要遍历整个日志文件,性能急剧下降 解决方案:索引 索引写性能弱于追加文件的性能 方案一:HASHMAP保存KEY->文件偏移量 实例:bitcask 适用场景:KEY数不多,但更新频繁的场景,索引可以放在内存 单个日志文件过大时,关闭该文件,开启新的日志段文件,对旧的段日志文件进行重写压缩 相关实例:REDIS AOF重写 段文件之间也可以进行合并,每个段维护各自的HASHMAP 合并旧段可防止文件碎片化问题 当客户端.原创 2020-10-22 17:38:16 · 184 阅读 · 1 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第5章 复制 读书笔记
复制 领导者与追随者 单领导者 同步复制与异步复制 同步 异步 半同步:一个副节点同步,其余副节点异步 设置新从库 全量镜象+增量 处理节点宕机 从节点 追赶恢复 主节点 流程 由剩余从节点或控制节点进行选主流程 通常选举有最新副本的从节点做为主节点 旧主节点上线后作为从节点 存在问题 新主库缺失旧主库部分写入,如果其收到冲突的写入(如主键冲突),常见方法是丢掉旧主库未同步的写入,但影响了写入的持久性 如果丢掉的写入与其他数据库相关联,则有可能会出现数据不一致的问题 脑裂.原创 2020-10-22 17:33:29 · 122 阅读 · 0 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第6章 分区 读书笔记
分区 解决问题:解决可扩展性 分区与复制 通常分区与复制是结合在一起的(多副本) 键值的分区 根据键的范围分区 每个分区可用SSTable以顺序方式保存键 缺点:某些特定访问模式会产生访问热点 解决方法:尝试用多个字段组合来创建键 根据键的HASH分区 保证平衡性但失去高效范围查询的能力 Cassandra折中策略 复合主键的第一列作为分区键,而后续键作为SSTable排序数据连接索引,虽不能在第一列做高效范围查询,但后续列可进行范围扫描 负载倾斜与消除热点 基于应用层,由用户控制编.原创 2020-10-22 17:31:19 · 120 阅读 · 0 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第7章 事务 读书笔记
事务 事务的棘手性 ACID 单对象和多对象操作 单对象写入 对单节点上的单个对象(例如键值对)上提供原子性和隔离性 原子性通过日志做崩溃恢复 隔离性通过加锁实现 多对象事务 关系型数据库更新带有外键的表 文档型数据同时更新多份文档 二级索引与数据的同时更新 处理错误和中止 对于已经提交的事务,如果在给客户端返回结果的网络中断,如果此时重试事务,则需要去重机制 如果是由网络拥塞导致的重试,则需要限制重试次数 非必要问题不用重试,如违反约束不需要重试 两阶段提交 弱隔离级.原创 2020-10-22 17:28:45 · 103 阅读 · 0 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第9章 一致性与共识 读书笔记
一致性与共识 一致性保证 分布式一致性与事务隔离的区别 事务隔离主要是为了避免由于同时执行事务而导致的竞争状态 分布式一致性主要关于,面对延迟和故障时,如何协调副本间的状态 线性一致性 即原子一致性(atomic consistency),强一致性 满足标准:使系统看起来只有一个副本 对于多副本系统,如果第一次从A副本读取,第二次从B副本读取同样的数据,有可能第二次看到的是旧数据,不满足线性一致性 解决方法:为读取添加约束,如果第一次读取读到新值,则后续读取也必须保证读到新值 线性一致与可.原创 2020-10-22 17:26:33 · 259 阅读 · 0 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第10章 批处理 读书笔记
批处理 使用Unix工具的批处理 分析简单日志 以分析网站URL统计量并倒序排序为例 命令链与自定义程序 借助SHELL命令链或脚本语言均可用来分析日志 排序 VS 内存中的聚合 对于上述统计网站的例子,如果URL种类很少,则使用内存中的聚合较合适 GNU Coreutils(Linux)中的sort 程序通过溢出至磁盘的方式来自动应对大于内存的数据集,并能同时使用多个CPU核进行并行排序,可对大数据集进行处理 Unix哲学 统一的接口 使用文件描述符在管道中进行输入.原创 2020-10-22 17:20:52 · 138 阅读 · 0 评论 -
《设计数据密集型应用》- Designing Data-Intensive Application - 第11章 流处理 读书笔记
流处理 传递事件流 消息系统(ACK) 直接从生产者传递给消费者 常见形式 UDP组播 无代理的消息库 StatsD,使用UDP收集网络中所有机器的的指标并对其进行监控,只有收到所有消息,才认为计数器指标是正确的 HTTP或RPC请求 存在问题 容错能力差,即使有消息重传机制,当消费者或生产者崩溃时,仍会丢失数据 消息代理(消息队列) 容忍客户端连接的上线、崩溃 带来异步与消息延迟问题 消息代理与数据库对比 数据库中的记录需要显式删除,而消息代理当消息消费完成后即自动.原创 2020-10-22 17:17:27 · 134 阅读 · 0 评论 -
《从0开始学架构》笔记-实战
原创 2020-09-21 15:52:41 · 146 阅读 · 0 评论 -
《从0开始学架构》笔记-可扩展
原创 2020-09-05 12:28:42 · 79 阅读 · 0 评论 -
《从0开始学架构》笔记-高可用
原创 2020-09-02 18:21:21 · 76 阅读 · 0 评论 -
《从0开始学架构》笔记-高性能
原创 2020-09-01 16:28:43 · 136 阅读 · 0 评论