Createsequence's Blog

一个努力前进的程序猿


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

设计模式(三):代理模式

发表于 2020-11-20 | 分类于 设计模式
字数统计: 2.1k

概述

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

策略模式旨在不改变被代理对象的基础上进行方法增强。

当我们一个原有的类不能满足功能,又处于职责或其他原因不便修改的时候,我们可以使用代理模式。通过代理类去调用被代理类的方法,在原方法的基础上进行各种加强,又不会改变原代码。

spring 中的 AOP 就运用了代理模式。

一、静态代理

为了简单的说明代理模式,我们举个例子:

首先有一个接口,叫做购房者,然后这个类地下有一个实现类,叫做小明:

1
2
3
4
5
6
7
8
9
10
11
12
13
//购房者接口
public interface Buyers {
// 买房
void buy();
}

//小明实现了购房者接口
public class XiaoMing implements Buyers {
@Override
public void buy() {
System.out.println("小明买了一套房");
}
}

买房子还要货比三家,小明没时间,于是就把买房子这件事情委托给中介

阅读全文 »

资源推荐:数据库内核月报

发表于 2020-11-17 | 分类于 资源推荐
字数统计: 3.7k

今天在舍友的安利下发现了一个新的宝藏,阿里的数据库内核日报,内容之全面让小白我瞠目结舌,简单的爬了一下 mysql 相关的文章。

完整版可以直接点击链接下载。以下只是 Mysql 内容的整合:

  1. MetadataLock子系统的优化 - 2014/11/05/
  2. Recovery改进 - 2014/11/03/
  3. 高可用支持 - 2014/11/04/
  4. 在线Truncateundolog表空间 - 2014/11/06/
  5. OptimizerCostModel - 2014/10/01/
  6. Renametable死锁分析 - 2016/03/06/
  7. CongratulationsonMySQL8.0GA - 2018/05/01/
  8. Redolog - 2019/03/03/
  9. tablespace源码分析 - 2019/01/08/
  10. TTL特性介绍 - 2018/04/04/
  11. MyRocks参数介绍 - 2018/01/09/
  12. OptimizerHints - 2020/09/07/
  13. ParallelIndexScans,OneisBetterThanTwo - 2019/10/03/
  14. 数据的读取(二) - 2018/12/08/
  15. 数据的读取(一) - 2018/11/05/
  16. LevelCompact分析 - 2018/10/08/
  17. TransactionDB介绍 - 2018/10/09/
  18. Memtableflush分析 - 2018/09/04/
  19. WritePreparedPolicy - 2018/08/02/
  20. MemTable的写入逻辑 - 2018/08/08/
  21. 写入逻辑的实现 - 2018/07/04/
  22. ColumnFamily介绍 - 2018/06/09/
  23. MANIFEST文件介绍 - 2018/05/08/
  24. WAL(WriteAheadLog)介绍 - 2018/04/09/
  25. rbtreeblockallocator - 2016/11/03/
  26. checkpoint过程 - 2016/06/06/
  27. 日志子系统和崩溃恢复过程 - 2016/05/07/
  28. TokuDB索引结构--FractalTree - 2016/04/09/
  29. Savepoint漫谈 - 2016/04/10/
  30. 事务子系统和MVCC实现 - 2016/03/01/
  31. TokuDB之黑科技工具 - 2016/02/06/
  32. Cachetable的工作线程和线程池 - 2016/01/06/
  33. 让HotBackup更完美 - 2015/12/06/
  34. TokuDB中的行锁 - 2015/11/09/
  35. 文件目录谈 - 2015/09/10/
  36. 疯狂的filenum++ - 2015/08/08/
  37. TokuDBCheckpoint机制 - 2015/07/02/
  38. TokuDB数据文件大小计算 - 2015/06/10/
  39. collation限制 - 2018/09/09/
  40. clusteredindex特性 - 2018/07/07/
  41. 事务锁分析 - 2018/03/07/
  42. 相关tools介绍 - 2017/12/10/
  43. myrocks之Bloomfilter - 2017/09/04/
  44. myrocks写入分析 - 2017/07/05/
  45. MyRocks之memtable切换与刷盘 - 2017/06/08/
  46. fastdataload - 2017/05/09/
  47. myrocks监控信息 - 2017/03/10/
  48. myrocks之备份恢复 - 2017/02/02/
  49. myrocksindexconditionpushdown - 2017/01/02/
  50. myrocks统计信息 - 2016/12/02/
  51. myrocks之事务处理 - 2016/11/02/
  52. datadictionary分析 - 2016/10/05/
  53. GTID启动优化 - 2014/12/09/
  54. InnoDB物理行中null值的存储的推断与验证 - 2016/08/07/
  55. MySQL5.7的JSON实现 - 2016/01/03/
  56. MySQL数据库SYSCPU高的可能性分析 - 2015/05/02/
  57. RDS三节点企业版的高可用体系 - 2020/03/03/
  58. MYSQL开源软件源码阅读小技巧 - 2019/12/03/
  59. 复制性能改进过程 - 2015/01/05/
  60. MySQLindex_condition_pushdown - 2015/03/05/
  61. InnoDBBufferPool并发控制 - 2020/05/06/
  62. InnoDBmutex实现分析 - 2020/03/05/
  63. InnoDB的统计信息 - 2020/03/08/
  64. RedoLogging动态开关 - 2020/08/03/
  65. 8.0新的火山模型执行器 - 2020/07/01/
  66. semi-join四个执行strategy - 2020/07/04/
  67. InnoDBbtreelatch优化历程 - 2020/06/02/
  68. Attachabletransaction - 2020/06/03/
  69. Linkbuf - 2020/06/04/
  70. 一致性协议underthehood - 2020/09/02/
  71. binlog拉取速度的控制 - 2015/07/09/
  72. 5.6并行复制实现分析 - 2015/08/09/
  73. MySQL表定义缓存 - 2015/08/10/
  74. InnoDBWarmup特性 - 2014/10/06/
  75. 再议MySQL的故障恢复 - 2018/12/04/
  76. RDSMySQL参数调优最佳实践 - 2015/12/04/
  77. innodb_additional_mem_pool_size - 2016/04/01/
  78. thread_concurrency - 2014/09/05/
  79. timed_mutexes - 2014/08/01/
  80. innodb_flush_log_at_trx_commit - 2014/08/02/
  81. relayfetch备库优化 - 2015/09/08/
  82. MySQL的字段数据存储格式 - 2020/02/05/
  83. HybridDBforMySQL数据压缩 - 2017/07/08/
  84. 对字符集和字符序支持的实现 - 2017/03/06/
  85. Sphinx源码剖析(三) - 2017/10/06/
  86. Sphinx源码剖析(二) - 2017/04/03/
  87. Sphinx源码剖析(一) - 2016/11/05/
  88. InnoDBhistorylist无法降到0的原因 - 2019/04/04/
  89. InnoDB行锁分析 - 2018/05/04/
  90. create_timeinstatus - 2014/09/04/
  91. InnoDB隐式锁功能解析 - 2020/09/06/
  92. truncatetable在大bufferpool下的优化 - 2020/08/01/
  93. INNODBUNDOLOG分配 - 2020/08/02/
  94. InnoDBBufferPage生命周期 - 2020/08/04/
  95. InnoDBUNDOLOG写入 - 2020/08/05/
  96. InnoDB数据文件简述 - 2020/08/06/
  97. InnoDBredologthreadcpuusage - 2020/07/05/
  98. 基于GTID复制实现的工作原理 - 2020/05/09/
  99. 8.0WindowFunctions剖析 - 2020/04/04/
  100. Performance_schema内存分配 - 2020/04/05/
  101. 手动分析InnoDBB+Tree结构 - 2020/04/06/
  102. 8.0LockManager - 2020/04/09/
  103. 8.0InstantAddColumn功能解析 - 2020/03/01/
  104. Latch持有分析 - 2020/03/07/
  105. 排序实现 - 2020/03/09/
  106. 庖丁解InnoDB之REDOLOG - 2020/02/01/
  107. InnoDBBufferPool浅析 - 2020/02/02/
  108. 8.0heaptable介绍 - 2020/02/04/
  109. MYSQLBinlogCache详解 - 2020/02/06/
  110. 二级索引分析 - 2020/01/01/
  111. X-EngineOnlineDDL - 2020/01/02/
  112. InnoDBredolog之writeahead - 2020/01/05/
  113. InnodbWAL物理格式 - 2020/01/06/
  114. 动态元信息持久化 - 2019/12/01/
  115. Binlogencryption浅析 - 2019/12/02/
  116. 多线程调试工具DEBUG_SYNC的源码实现和使用 - 2019/12/04/
  117. InnoDBParallelreadofindex - 2019/12/05/
  118. RDS三节点企业版一致性协议 - 2019/11/06/
  119. RDS三节点企业版Learner只读实例 - 2019/11/07/
  120. Innodb表空间 - 2019/10/01/
  121. POLARDB并行查询加速全程详解 - 2019/10/02/
  122. SequenceEngine - 2019/10/05/
  123. 临时表改进 - 2019/09/01/
  124. 初探ClonePlugin - 2019/09/02/
  125. 网络模块优化 - 2019/09/03/
  126. Multi-ValuedIndexes简述 - 2019/09/04/
  127. 8.0Innodbredologrecord源码分析 - 2019/08/03/
  128. clone_plugin - 2019/08/05/
  129. ROLLUP功能用法和实现 - 2019/08/08/
  130. BufferPool漫谈 - 2019/07/03/
  131. CTE(CommonTableExpressions) - 2019/07/06/
  132. 安全及权限改进相关 - 2019/06/01/
  133. 说说InnoDBLogSystem的隐藏参数 - 2019/06/07/
  134. CHECKCONSTRAINT - 2019/06/08/
  135. 通过SQL管理UNDOTABLESPACE - 2019/05/04/
  136. SkipScanRange - 2019/05/06/
  137. 临时表那些事儿 - 2019/04/01/
  138. 新的事务锁调度VATS简介 - 2019/04/06/
  139. 增加系统文件追踪spaceID和物理文件的映射 - 2019/04/07/
  140. 8.0DescendingIndex - 2019/03/07/
  141. MySQL状态信息Status实现 - 2019/03/09/
  142. InspectingtheContentofaMySQLHistogram - 2019/02/02/
  143. Thedesignofmysql8.0redolog - 2019/02/05/
  144. InnoDBMVCC相关实现 - 2018/11/04/
  145. CostModel,直方图及优化器开销优化 - 2018/10/02/
  146. B+树并发控制机制的前世今生 - 2018/09/01/
  147. IO_CACHE源码解析 - 2018/09/03/
  148. 主库binlog概览 - 2018/08/01/
  149. WAL那些事儿 - 2018/07/01/
  150. InnoDB表空间加密 - 2018/04/01/
  151. InnoDB数据页解析 - 2018/04/03/
  152. INFORMATION_SCHEMA系统表的实现 - 2018/02/08/
  153. GroupReplication内核解析之二 - 2018/01/01/
  154. MySQL内核对读写分离的支持 - 2018/01/02/
  155. InnoDB事务系统 - 2017/12/01/
  156. Innodb锁子系统浅析 - 2017/12/02/
  157. DROPTABLE之binlog解析 - 2017/11/02/
  158. TokuDBhot-index机制 - 2017/11/08/
  159. InnoDBminitransation - 2017/10/03/
  160. GroupReplication内核解析 - 2017/08/01/
  161. InnoDB崩溃恢复 - 2017/07/01/
  162. 从节点可更新机制 - 2017/06/03/
  163. InnoDBBufferPool - 2017/05/01/
  164. InnoDBIO子系统 - 2017/03/01/
  165. InnoDB同步机制 - 2017/01/01/
  166. Infobright列存数据库 - 2016/12/01/
  167. ColumnCompression浅析 - 2016/11/04/
  168. InnoDBCOUNT(*)优化(?) - 2016/06/10/
  169. 基于InnoDB的物理复制实现 - 2016/05/01/
  170. InnoDB文件系统之文件物理结构 - 2016/02/01/
  171. InnoDB文件系统之IO系统和内存管理 - 2016/02/02/
  172. InnoDB事务锁系统简介 - 2016/01/01/
  173. InnoDB事务子系统介绍 - 2015/12/01/
  174. InnoDB全文索引简介 - 2015/10/01/
  175. InnoDBAdaptivehashindex介绍 - 2015/09/01/
  176. Innodbchangebuffer介绍 - 2015/07/01/
  177. InnoDBindexlock前世今生 - 2015/07/05/
  178. MySQLlogicalread-ahead - 2015/07/08/
  179. InnoDB崩溃恢复过程 - 2015/06/01/
  180. InnoDBredolog漫游 - 2015/05/01/
  181. InnoDBundolog漫游 - 2015/04/01/
  182. PageCache优化管理 - 2020/09/01/
  183. CloudDBASQL优化建议之统计信息获取 - 2017/10/02/
  184. MySQL常见SQL错误用法 - 2017/03/03/
  185. 条件下推到物化表 - 2016/07/08/
  186. 5.7.6InnoDBpageflush优化 - 2015/03/02/
  187. InnoDBbufferpoolflush策略漫谈 - 2015/02/01/
  188. GroupCommit优化 - 2015/01/01/
  189. 启用GTID场景的性能问题及优化 - 2015/01/03/
  190. 5.7Innodb事务系统 - 2014/12/01/
  191. threadpool原理分析 - 2014/12/03/
  192. 并行复制外建约束问题 - 2014/12/04/
  193. BulkLoadforCREATEINDEX - 2014/12/07/
  194. hash_scan算法的实现解析 - 2014/11/07/
  195. LOCK_active_mi/LOCK_msp_map优化思路 - 2017/02/03/
  196. 弱序内存模型导致的死锁问题 - 2020/01/03/
  197. UK包含NULL值备库延迟分析 - 2018/01/04/
  198. Errorinmunmap()"Cannotallocatememory" - 2018/01/05/
  199. 字符集相关变量介绍及binlog中字符集相关缺陷分析 - 2018/01/07/
  200. 信号处理机制分析 - 2017/10/10/
  201. showbinarylogs灵异事件 - 2017/09/03/
  202. InnoDBcrash - 2017/06/05/
  203. 5.7mysql_upgrade元数据锁等待 - 2017/04/10/
  204. event_scheduler慢日志记错 - 2017/01/05/
  205. 5.6中ORDERBY+LIMIT错选执行计划 - 2016/12/08/
  206. 备库1206错误问题说明 - 2016/07/10/
  207. left-join多表导致crash - 2016/05/10/
  208. 并行复制外键约束问题二 - 2016/04/04/
  209. MySQL外键异常分析 - 2015/11/06/
  210. ORDER/GROUPBY导致mysqldcrash - 2015/11/08/
  211. orderbylimit造成优化器选择索引错误 - 2015/11/10/
  212. startslavecrash诊断分析 - 2015/10/05/
  213. 删除索引导致表无法打开 - 2015/10/06/
  214. BUG几例 - 2015/09/03/
  215. 建表过程中crash造成重建表失败 - 2015/09/05/
  216. 唯一键约束失效 - 2015/06/02/
  217. ALTERIGNORETABLE导致主备不一致 - 2015/06/03/
  218. 任性的normalshutdown - 2015/06/07/
  219. 5.6与5.5InnoDB不兼容导致crash - 2015/05/03/
  220. MySQLDDLBUG - 2015/05/06/
  221. 临时表操作导致主备不一致 - 2015/05/08/
  222. 连接断开导致XA事务丢失 - 2015/04/05/
  223. GTID下slave_net_timeout值太小问题 - 2015/04/06/
  224. Relaylog中GTIDgroup完整性检测 - 2015/04/07/
  225. 删被引用索引导致crash - 2015/04/09/
  226. pidfile丢失问题分析 - 2015/03/03/
  227. DROPDATABASE外键约束的GTIDBUG - 2015/03/06/
  228. 变量修改导致binlog错误 - 2015/02/07/
  229. InnoDB自增列重复值问题 - 2015/01/04/
  230. mysqlclientcrash一例 - 2015/01/07/
  231. 设置gtid_purged破坏AUTO_POSITION复制协议 - 2015/01/08/
  232. replicatefilter和GTID一起使用的问题 - 2015/01/09/
  233. Openedtablesblockreadonly - 2014/12/08/
  234. OPTIMIZE不存在的表 - 2014/11/01/
  235. SIGHUP导致binlog写错 - 2014/11/02/
  236. binlog重放失败 - 2014/10/03/
  237. 从库OOM - 2014/10/04/
  238. 崩溃恢复失败 - 2014/10/05/
  239. GTID和DELAYED - 2014/09/01/
  240. GTID和binlog_checksum - 2014/09/03/
  241. auto_increment - 2014/09/06/
  242. Count(Distinct)ERROR - 2014/08/03/
  243. mysqldumpBUFFEROVERFLOW - 2014/08/04/
  244. longsemaphorewaits - 2014/08/05/
  245. bug分析两例 - 2016/09/06/
  246. ConnectionControl - 2020/05/08/
  247. undrop-for-innodb - 2017/11/01/
  248. 告别frm文件 - 2014/10/07/
  249. DDLfastfail - 2015/01/02/
  250. MySQL哈希连接实现介绍 - 2019/11/02/
  251. 5.7中Derivedtable变形记 - 2017/03/05/
  252. CTE执行过程与实现原理 - 2017/02/06/
  253. 审计日志实用案例分析 - 2016/07/07/
  254. X-Engine并行扫描 - 2020/04/03/
  255. RDS三节点企业版热点组提交 - 2020/02/03/
  256. 8.0redolog写入性能问题分析 - 2020/01/04/
  257. 今天你并行了吗?---洞察PolarDB8.0之并行查询 - 2019/11/01/
  258. 性能分析的大杀器—Optimizertrace - 2019/11/03/
  259. X-EngineMySQLRDS用户的新选择 - 2019/10/04/
  260. StatementOutline - 2019/07/01/
  261. RDSMySQL8.0语句级并发控制 - 2019/06/02/
  262. 通过ResourceGroup来控制线程计算资源 - 2019/05/05/
  263. 如何使用C++实现MySQL用户定义函数 - 2019/02/08/
  264. MySQL多队列线程池优化 - 2019/02/09/
  265. MySQL中的IO共享操作 - 2019/01/09/
  266. 性能问题多维度诊断 - 2018/11/08/
  267. 8.0CTE和窗口函数的用法 - 2018/11/09/
  268. 一个TPC-C测试工具sqlbench使用 - 2018/07/09/
  269. 难以置信,MySQL也可以无损自由切换 - 2018/06/03/
  270. 在线收缩UNDOTablespace - 2018/02/09/
  271. 一个“异常”的索引选择 - 2017/12/06/
  272. 如何索引JSON字段 - 2017/12/09/
  273. 什么时候该升级内存规格 - 2017/11/04/
  274. 分区表基本类型 - 2017/11/09/
  275. 空间优化 - 2016/06/08/
  276. RDS只读实例延迟分析 - 2016/04/08/
  277. RDSMySQL线上实例insert慢常见原因分析 - 2018/09/07/
  278. 8.0 - 2020/05/05/
  279. 内部XA和组提交 - 2020/05/07/
  280. InnoDB读写锁实现分析 - 2020/04/02/
  281. slowlog与CSV引擎 - 2019/07/08/
  282. 聚合函数(AggregateFunction)的实现过程 - 2019/05/02/
  283. LinkBuf设计与实现 - 2019/05/08/
  284. CHECKTABLE实现 - 2019/03/05/
  285. 8.0Functionalindex的实现过程 - 2019/02/06/
  286. Innodb缓冲池刷脏的多线程实现 - 2018/09/02/
  287. 连接与认证过程 - 2018/08/07/
  288. 8.0原子DDL的实现过程续 - 2018/07/02/
  289. binlogcrashrecovery - 2018/07/05/
  290. changemasterto - 2018/05/09/
  291. 协议模块浅析 - 2018/04/05/
  292. InnoDB的readview,回滚段和purge过程简介 - 2018/03/01/
  293. 原子DDL的实现过程 - 2018/03/02/
  294. 常用SQL语句的MDL加锁源码分析 - 2018/02/01/
  295. 权限浅析 - 2018/02/03/
  296. 新连接的建立 - 2018/02/07/
  297. InnoDBLRUList刷脏改进之路 - 2017/11/05/
  298. Innodb引擎Redo日志存储格式简介 - 2017/09/07/
  299. 一条insert语句的执行过程 - 2017/09/10/
  300. MySQLreplicationpartialtransaction - 2017/08/03/
  301. mysql认证阶段漫游 - 2017/08/05/
  302. 内存分配机制 - 2017/08/06/
  303. SHUTDOWN过程 - 2017/08/09/
  304. InnoDB异步IO工作流程 - 2017/07/10/
  305. Tokudb序列化和反序列化过程 - 2017/06/01/
  306. InnoDBRepeatableRead隔离级别之大不同 - 2017/06/07/
  307. MySQL半同步复制数据一致性分析 - 2017/04/01/
  308. MySQLBINLOG半同步复制数据安全性分析 - 2017/03/07/
  309. 词法分析及其性能优化 - 2017/02/04/
  310. 无法revoke单库或单表权限 - 2016/10/06/
  311. QueryCache并发处理 - 2016/08/09/
  312. 网络通信模块浅析 - 2016/07/04/
  313. QueryCache内部剖析 - 2016/07/09/
  314. InnoDB伙伴内存分配系统实现分析 - 2020/09/04/
  315. PerconaXtraBackup备份原理 - 2016/03/07/
  316. 一些流行引擎存储格式简介 - 2017/10/04/
  317. InnoDB对binlog_format的限制 - 2018/08/04/
  318. 8.0对WAL的设计修改 - 2018/06/01/
  319. 8.0WriteSet并行复制 - 2018/06/04/
  320. MySQL8.0资源组(ResourceGroups) - 2018/05/03/
  321. MySQL的预编译功能 - 2018/04/07/
  322. (deleted)临时空间 - 2018/04/08/
  323. innodb_buffer_pool_size在线修改 - 2018/03/06/
  324. LOGICAL_CLOCK并行复制原理及实现分析 - 2017/12/03/
  325. MySQL5.7外部XAReplication实现及缺陷分析 - 2017/11/06/
  326. 数据一样checksum不一样 - 2017/10/08/
  327. 浅谈MySQL5.7XA事务改进 - 2017/09/05/
  328. 利用gdb跟踪MDL加锁过程 - 2017/09/06/
  329. 到底是谁执行了FTWL - 2017/08/04/
  330. commontableexpression - 2017/04/05/
  331. 5.7errorlog时区和系统时区不同 - 2017/01/09/
  332. 直方图的实现与分析 - 2016/10/09/
  333. 执行计划缓存设计与实现 - 2016/09/04/
  334. MySQL5.7新特性系列四 - 2016/08/01/
  335. MyRocks简介 - 2016/08/03/
  336. MySQL5.7新特性系列三 - 2016/07/01/
  337. 5.7代价模型浅析 - 2016/07/02/
  338. innodb锁分裂继承与迁移 - 2016/06/01/
  339. MySQL5.7新特性系列二 - 2016/06/02/
  340. 内部临时表 - 2016/06/07/
  341. MySQL5.7新特性系列一 - 2016/05/02/
  342. innodbbufferpool相关特性 - 2016/05/04/
  343. InnoDBtransactionhistory - 2016/02/03/
  344. 线程池 - 2016/02/09/
  345. 优化器MRR&BKA - 2016/01/04/
  346. droptable的优化 - 2016/01/07/
  347. IndexConditionPushdown(ICP) - 2015/12/08/
  348. 企业版特性一览 - 2015/12/10/
  349. StatementDigest - 2015/11/02/
  350. MDL实现分析 - 2015/11/04/
  351. 跟踪Metadatalock - 2015/10/02/
  352. MySQL权限存储与管理 - 2015/10/10/
  353. 5.6并行复制恢复实现 - 2015/09/07/
  354. 5.6并行复制事件分发机制 - 2015/09/09/
  355. OnlineDDL工具gh-ost支持阿里云RDS - 2018/05/02/
  356. MariaDB10.2前瞻 - 2016/09/03/
  357. InnoDBPageCompression - 2015/08/01/
  358. MySQL5.6.26ReleaseNote解读 - 2015/08/03/
  359. MariaDBInnoDB表空间碎片整理 - 2015/08/05/
  360. MySQL内存分配支持NUMA - 2015/07/06/
  361. MariaDBRole体系 - 2015/06/09/
  362. 5.6.23InnoDB相关Bugfix - 2015/02/02/
  363. MariaDB10.2GA - 2017/06/10/
  364. OracleOpenWorld2016见闻 - 2016/10/02/
  365. PerconaLive2016见闻 - 2016/10/03/
  366. MariaDBDeveloperMeeting2016 - 2016/10/04/
  367. OOW2015总结MySQL篇 - 2015/11/01/
  368. AliSQL那些事儿 - 2016/09/01/
  369. MySQL的那些网络超时错误 - 2017/05/04/
  370. 备库Seconds_Behind_Master计算 - 2016/03/09/
  371. MySQL锁问题最佳实践 - 2016/03/10/
  372. mysqldumptips两则 - 2016/02/10/
  373. 物理备份死锁分析 - 2016/01/05/
  374. GTID不一致分析 - 2016/01/08/
  375. MySQL优化器range的代价计算 - 2015/11/07/
  376. 索引过滤性太差引起CPU飙高分析 - 2015/10/03/
  377. openfilelimits - 2015/08/07/
  378. 外键删除bug分析 - 2015/07/07/
  379. 浮点型的显示问题 - 2015/07/10/
  380. MySQLSort分页 - 2015/06/04/
  381. binlogevent中的errorcode - 2015/06/05/
  382. InnoDB预读VSOracle多块读 - 2015/05/04/
  383. setnames都做了什么 - 2015/05/07/
  384. binlog位点刷新策略 - 2015/05/10/
  385. UPDATE交换列单表和多表的区别 - 2015/04/08/
  386. GTID下auto_position=0时数据不一致 - 2015/04/10/
  387. 并发Replaceinto导致的死锁分析 - 2015/03/01/
  388. usingfilesortVSusingtemporary - 2015/03/04/
  389. lower_case_table_names使用问题 - 2015/03/07/
  390. InnoDB丢失自增值 - 2015/02/05/
  391. 5.5和5.6时间类型兼容问题 - 2015/02/06/
  392. binlogevent有序性 - 2014/12/05/
  393. server_id为0的Rotate - 2014/12/06/
  394. text字段数 - 2014/10/02/
  395. key分区算法演变分析 - 2015/01/06/
  396. 5.6GTID和存储引擎那会事 - 2014/12/02/
  397. GTID和升级 - 2014/09/02/
  398. 索引篇 - 2017/02/05/
阅读全文 »

资源推荐:数据库内核月报

发表于 2020-11-17 | 分类于 资源推荐
字数统计: 3.7k

今天在舍友的安利下发现了一个新的宝藏,阿里的数据库内核日报,内容之全面让小白我瞠目结舌,简单的爬了一下 mysql 相关的文章。

完整版可以直接点击链接下载。以下只是 Mysql 内容的整合:

  1. MetadataLock子系统的优化 - 2014/11/05/
  2. Recovery改进 - 2014/11/03/
  3. 高可用支持 - 2014/11/04/
  4. 在线Truncateundolog表空间 - 2014/11/06/
  5. OptimizerCostModel - 2014/10/01/
  6. Renametable死锁分析 - 2016/03/06/
  7. CongratulationsonMySQL8.0GA - 2018/05/01/
  8. Redolog - 2019/03/03/
  9. tablespace源码分析 - 2019/01/08/
  10. TTL特性介绍 - 2018/04/04/
  11. MyRocks参数介绍 - 2018/01/09/
  12. OptimizerHints - 2020/09/07/
  13. ParallelIndexScans,OneisBetterThanTwo - 2019/10/03/
  14. 数据的读取(二) - 2018/12/08/
  15. 数据的读取(一) - 2018/11/05/
  16. LevelCompact分析 - 2018/10/08/
  17. TransactionDB介绍 - 2018/10/09/
  18. Memtableflush分析 - 2018/09/04/
  19. WritePreparedPolicy - 2018/08/02/
  20. MemTable的写入逻辑 - 2018/08/08/
  21. 写入逻辑的实现 - 2018/07/04/
  22. ColumnFamily介绍 - 2018/06/09/
  23. MANIFEST文件介绍 - 2018/05/08/
  24. WAL(WriteAheadLog)介绍 - 2018/04/09/
  25. rbtreeblockallocator - 2016/11/03/
  26. checkpoint过程 - 2016/06/06/
  27. 日志子系统和崩溃恢复过程 - 2016/05/07/
  28. TokuDB索引结构--FractalTree - 2016/04/09/
  29. Savepoint漫谈 - 2016/04/10/
  30. 事务子系统和MVCC实现 - 2016/03/01/
  31. TokuDB之黑科技工具 - 2016/02/06/
  32. Cachetable的工作线程和线程池 - 2016/01/06/
  33. 让HotBackup更完美 - 2015/12/06/
  34. TokuDB中的行锁 - 2015/11/09/
  35. 文件目录谈 - 2015/09/10/
  36. 疯狂的filenum++ - 2015/08/08/
  37. TokuDBCheckpoint机制 - 2015/07/02/
  38. TokuDB数据文件大小计算 - 2015/06/10/
  39. collation限制 - 2018/09/09/
  40. clusteredindex特性 - 2018/07/07/
  41. 事务锁分析 - 2018/03/07/
  42. 相关tools介绍 - 2017/12/10/
  43. myrocks之Bloomfilter - 2017/09/04/
  44. myrocks写入分析 - 2017/07/05/
  45. MyRocks之memtable切换与刷盘 - 2017/06/08/
  46. fastdataload - 2017/05/09/
  47. myrocks监控信息 - 2017/03/10/
  48. myrocks之备份恢复 - 2017/02/02/
  49. myrocksindexconditionpushdown - 2017/01/02/
  50. myrocks统计信息 - 2016/12/02/
  51. myrocks之事务处理 - 2016/11/02/
  52. datadictionary分析 - 2016/10/05/
  53. GTID启动优化 - 2014/12/09/
  54. InnoDB物理行中null值的存储的推断与验证 - 2016/08/07/
  55. MySQL5.7的JSON实现 - 2016/01/03/
  56. MySQL数据库SYSCPU高的可能性分析 - 2015/05/02/
  57. RDS三节点企业版的高可用体系 - 2020/03/03/
  58. MYSQL开源软件源码阅读小技巧 - 2019/12/03/
  59. 复制性能改进过程 - 2015/01/05/
  60. MySQLindex_condition_pushdown - 2015/03/05/
  61. InnoDBBufferPool并发控制 - 2020/05/06/
  62. InnoDBmutex实现分析 - 2020/03/05/
  63. InnoDB的统计信息 - 2020/03/08/
  64. RedoLogging动态开关 - 2020/08/03/
  65. 8.0新的火山模型执行器 - 2020/07/01/
  66. semi-join四个执行strategy - 2020/07/04/
  67. InnoDBbtreelatch优化历程 - 2020/06/02/
  68. Attachabletransaction - 2020/06/03/
  69. Linkbuf - 2020/06/04/
  70. 一致性协议underthehood - 2020/09/02/
  71. binlog拉取速度的控制 - 2015/07/09/
  72. 5.6并行复制实现分析 - 2015/08/09/
  73. MySQL表定义缓存 - 2015/08/10/
  74. InnoDBWarmup特性 - 2014/10/06/
  75. 再议MySQL的故障恢复 - 2018/12/04/
  76. RDSMySQL参数调优最佳实践 - 2015/12/04/
  77. innodb_additional_mem_pool_size - 2016/04/01/
  78. thread_concurrency - 2014/09/05/
  79. timed_mutexes - 2014/08/01/
  80. innodb_flush_log_at_trx_commit - 2014/08/02/
  81. relayfetch备库优化 - 2015/09/08/
  82. MySQL的字段数据存储格式 - 2020/02/05/
  83. HybridDBforMySQL数据压缩 - 2017/07/08/
  84. 对字符集和字符序支持的实现 - 2017/03/06/
  85. Sphinx源码剖析(三) - 2017/10/06/
  86. Sphinx源码剖析(二) - 2017/04/03/
  87. Sphinx源码剖析(一) - 2016/11/05/
  88. InnoDBhistorylist无法降到0的原因 - 2019/04/04/
  89. InnoDB行锁分析 - 2018/05/04/
  90. create_timeinstatus - 2014/09/04/
  91. InnoDB隐式锁功能解析 - 2020/09/06/
  92. truncatetable在大bufferpool下的优化 - 2020/08/01/
  93. INNODBUNDOLOG分配 - 2020/08/02/
  94. InnoDBBufferPage生命周期 - 2020/08/04/
  95. InnoDBUNDOLOG写入 - 2020/08/05/
  96. InnoDB数据文件简述 - 2020/08/06/
  97. InnoDBredologthreadcpuusage - 2020/07/05/
  98. 基于GTID复制实现的工作原理 - 2020/05/09/
  99. 8.0WindowFunctions剖析 - 2020/04/04/
  100. Performance_schema内存分配 - 2020/04/05/
  101. 手动分析InnoDBB+Tree结构 - 2020/04/06/
  102. 8.0LockManager - 2020/04/09/
  103. 8.0InstantAddColumn功能解析 - 2020/03/01/
  104. Latch持有分析 - 2020/03/07/
  105. 排序实现 - 2020/03/09/
  106. 庖丁解InnoDB之REDOLOG - 2020/02/01/
  107. InnoDBBufferPool浅析 - 2020/02/02/
  108. 8.0heaptable介绍 - 2020/02/04/
  109. MYSQLBinlogCache详解 - 2020/02/06/
  110. 二级索引分析 - 2020/01/01/
  111. X-EngineOnlineDDL - 2020/01/02/
  112. InnoDBredolog之writeahead - 2020/01/05/
  113. InnodbWAL物理格式 - 2020/01/06/
  114. 动态元信息持久化 - 2019/12/01/
  115. Binlogencryption浅析 - 2019/12/02/
  116. 多线程调试工具DEBUG_SYNC的源码实现和使用 - 2019/12/04/
  117. InnoDBParallelreadofindex - 2019/12/05/
  118. RDS三节点企业版一致性协议 - 2019/11/06/
  119. RDS三节点企业版Learner只读实例 - 2019/11/07/
  120. Innodb表空间 - 2019/10/01/
  121. POLARDB并行查询加速全程详解 - 2019/10/02/
  122. SequenceEngine - 2019/10/05/
  123. 临时表改进 - 2019/09/01/
  124. 初探ClonePlugin - 2019/09/02/
  125. 网络模块优化 - 2019/09/03/
  126. Multi-ValuedIndexes简述 - 2019/09/04/
  127. 8.0Innodbredologrecord源码分析 - 2019/08/03/
  128. clone_plugin - 2019/08/05/
  129. ROLLUP功能用法和实现 - 2019/08/08/
  130. BufferPool漫谈 - 2019/07/03/
  131. CTE(CommonTableExpressions) - 2019/07/06/
  132. 安全及权限改进相关 - 2019/06/01/
  133. 说说InnoDBLogSystem的隐藏参数 - 2019/06/07/
  134. CHECKCONSTRAINT - 2019/06/08/
  135. 通过SQL管理UNDOTABLESPACE - 2019/05/04/
  136. SkipScanRange - 2019/05/06/
  137. 临时表那些事儿 - 2019/04/01/
  138. 新的事务锁调度VATS简介 - 2019/04/06/
  139. 增加系统文件追踪spaceID和物理文件的映射 - 2019/04/07/
  140. 8.0DescendingIndex - 2019/03/07/
  141. MySQL状态信息Status实现 - 2019/03/09/
  142. InspectingtheContentofaMySQLHistogram - 2019/02/02/
  143. Thedesignofmysql8.0redolog - 2019/02/05/
  144. InnoDBMVCC相关实现 - 2018/11/04/
  145. CostModel,直方图及优化器开销优化 - 2018/10/02/
  146. B+树并发控制机制的前世今生 - 2018/09/01/
  147. IO_CACHE源码解析 - 2018/09/03/
  148. 主库binlog概览 - 2018/08/01/
  149. WAL那些事儿 - 2018/07/01/
  150. InnoDB表空间加密 - 2018/04/01/
  151. InnoDB数据页解析 - 2018/04/03/
  152. INFORMATION_SCHEMA系统表的实现 - 2018/02/08/
  153. GroupReplication内核解析之二 - 2018/01/01/
  154. MySQL内核对读写分离的支持 - 2018/01/02/
  155. InnoDB事务系统 - 2017/12/01/
  156. Innodb锁子系统浅析 - 2017/12/02/
  157. DROPTABLE之binlog解析 - 2017/11/02/
  158. TokuDBhot-index机制 - 2017/11/08/
  159. InnoDBminitransation - 2017/10/03/
  160. GroupReplication内核解析 - 2017/08/01/
  161. InnoDB崩溃恢复 - 2017/07/01/
  162. 从节点可更新机制 - 2017/06/03/
  163. InnoDBBufferPool - 2017/05/01/
  164. InnoDBIO子系统 - 2017/03/01/
  165. InnoDB同步机制 - 2017/01/01/
  166. Infobright列存数据库 - 2016/12/01/
  167. ColumnCompression浅析 - 2016/11/04/
  168. InnoDBCOUNT(*)优化(?) - 2016/06/10/
  169. 基于InnoDB的物理复制实现 - 2016/05/01/
  170. InnoDB文件系统之文件物理结构 - 2016/02/01/
  171. InnoDB文件系统之IO系统和内存管理 - 2016/02/02/
  172. InnoDB事务锁系统简介 - 2016/01/01/
  173. InnoDB事务子系统介绍 - 2015/12/01/
  174. InnoDB全文索引简介 - 2015/10/01/
  175. InnoDBAdaptivehashindex介绍 - 2015/09/01/
  176. Innodbchangebuffer介绍 - 2015/07/01/
  177. InnoDBindexlock前世今生 - 2015/07/05/
  178. MySQLlogicalread-ahead - 2015/07/08/
  179. InnoDB崩溃恢复过程 - 2015/06/01/
  180. InnoDBredolog漫游 - 2015/05/01/
  181. InnoDBundolog漫游 - 2015/04/01/
  182. PageCache优化管理 - 2020/09/01/
  183. CloudDBASQL优化建议之统计信息获取 - 2017/10/02/
  184. MySQL常见SQL错误用法 - 2017/03/03/
  185. 条件下推到物化表 - 2016/07/08/
  186. 5.7.6InnoDBpageflush优化 - 2015/03/02/
  187. InnoDBbufferpoolflush策略漫谈 - 2015/02/01/
  188. GroupCommit优化 - 2015/01/01/
  189. 启用GTID场景的性能问题及优化 - 2015/01/03/
  190. 5.7Innodb事务系统 - 2014/12/01/
  191. threadpool原理分析 - 2014/12/03/
  192. 并行复制外建约束问题 - 2014/12/04/
  193. BulkLoadforCREATEINDEX - 2014/12/07/
  194. hash_scan算法的实现解析 - 2014/11/07/
  195. LOCK_active_mi/LOCK_msp_map优化思路 - 2017/02/03/
  196. 弱序内存模型导致的死锁问题 - 2020/01/03/
  197. UK包含NULL值备库延迟分析 - 2018/01/04/
  198. Errorinmunmap()"Cannotallocatememory" - 2018/01/05/
  199. 字符集相关变量介绍及binlog中字符集相关缺陷分析 - 2018/01/07/
  200. 信号处理机制分析 - 2017/10/10/
  201. showbinarylogs灵异事件 - 2017/09/03/
  202. InnoDBcrash - 2017/06/05/
  203. 5.7mysql_upgrade元数据锁等待 - 2017/04/10/
  204. event_scheduler慢日志记错 - 2017/01/05/
  205. 5.6中ORDERBY+LIMIT错选执行计划 - 2016/12/08/
  206. 备库1206错误问题说明 - 2016/07/10/
  207. left-join多表导致crash - 2016/05/10/
  208. 并行复制外键约束问题二 - 2016/04/04/
  209. MySQL外键异常分析 - 2015/11/06/
  210. ORDER/GROUPBY导致mysqldcrash - 2015/11/08/
  211. orderbylimit造成优化器选择索引错误 - 2015/11/10/
  212. startslavecrash诊断分析 - 2015/10/05/
  213. 删除索引导致表无法打开 - 2015/10/06/
  214. BUG几例 - 2015/09/03/
  215. 建表过程中crash造成重建表失败 - 2015/09/05/
  216. 唯一键约束失效 - 2015/06/02/
  217. ALTERIGNORETABLE导致主备不一致 - 2015/06/03/
  218. 任性的normalshutdown - 2015/06/07/
  219. 5.6与5.5InnoDB不兼容导致crash - 2015/05/03/
  220. MySQLDDLBUG - 2015/05/06/
  221. 临时表操作导致主备不一致 - 2015/05/08/
  222. 连接断开导致XA事务丢失 - 2015/04/05/
  223. GTID下slave_net_timeout值太小问题 - 2015/04/06/
  224. Relaylog中GTIDgroup完整性检测 - 2015/04/07/
  225. 删被引用索引导致crash - 2015/04/09/
  226. pidfile丢失问题分析 - 2015/03/03/
  227. DROPDATABASE外键约束的GTIDBUG - 2015/03/06/
  228. 变量修改导致binlog错误 - 2015/02/07/
  229. InnoDB自增列重复值问题 - 2015/01/04/
  230. mysqlclientcrash一例 - 2015/01/07/
  231. 设置gtid_purged破坏AUTO_POSITION复制协议 - 2015/01/08/
  232. replicatefilter和GTID一起使用的问题 - 2015/01/09/
  233. Openedtablesblockreadonly - 2014/12/08/
  234. OPTIMIZE不存在的表 - 2014/11/01/
  235. SIGHUP导致binlog写错 - 2014/11/02/
  236. binlog重放失败 - 2014/10/03/
  237. 从库OOM - 2014/10/04/
  238. 崩溃恢复失败 - 2014/10/05/
  239. GTID和DELAYED - 2014/09/01/
  240. GTID和binlog_checksum - 2014/09/03/
  241. auto_increment - 2014/09/06/
  242. Count(Distinct)ERROR - 2014/08/03/
  243. mysqldumpBUFFEROVERFLOW - 2014/08/04/
  244. longsemaphorewaits - 2014/08/05/
  245. bug分析两例 - 2016/09/06/
  246. ConnectionControl - 2020/05/08/
  247. undrop-for-innodb - 2017/11/01/
  248. 告别frm文件 - 2014/10/07/
  249. DDLfastfail - 2015/01/02/
  250. MySQL哈希连接实现介绍 - 2019/11/02/
  251. 5.7中Derivedtable变形记 - 2017/03/05/
  252. CTE执行过程与实现原理 - 2017/02/06/
  253. 审计日志实用案例分析 - 2016/07/07/
  254. X-Engine并行扫描 - 2020/04/03/
  255. RDS三节点企业版热点组提交 - 2020/02/03/
  256. 8.0redolog写入性能问题分析 - 2020/01/04/
  257. 今天你并行了吗?---洞察PolarDB8.0之并行查询 - 2019/11/01/
  258. 性能分析的大杀器—Optimizertrace - 2019/11/03/
  259. X-EngineMySQLRDS用户的新选择 - 2019/10/04/
  260. StatementOutline - 2019/07/01/
  261. RDSMySQL8.0语句级并发控制 - 2019/06/02/
  262. 通过ResourceGroup来控制线程计算资源 - 2019/05/05/
  263. 如何使用C++实现MySQL用户定义函数 - 2019/02/08/
  264. MySQL多队列线程池优化 - 2019/02/09/
  265. MySQL中的IO共享操作 - 2019/01/09/
  266. 性能问题多维度诊断 - 2018/11/08/
  267. 8.0CTE和窗口函数的用法 - 2018/11/09/
  268. 一个TPC-C测试工具sqlbench使用 - 2018/07/09/
  269. 难以置信,MySQL也可以无损自由切换 - 2018/06/03/
  270. 在线收缩UNDOTablespace - 2018/02/09/
  271. 一个“异常”的索引选择 - 2017/12/06/
  272. 如何索引JSON字段 - 2017/12/09/
  273. 什么时候该升级内存规格 - 2017/11/04/
  274. 分区表基本类型 - 2017/11/09/
  275. 空间优化 - 2016/06/08/
  276. RDS只读实例延迟分析 - 2016/04/08/
  277. RDSMySQL线上实例insert慢常见原因分析 - 2018/09/07/
  278. 8.0 - 2020/05/05/
  279. 内部XA和组提交 - 2020/05/07/
  280. InnoDB读写锁实现分析 - 2020/04/02/
  281. slowlog与CSV引擎 - 2019/07/08/
  282. 聚合函数(AggregateFunction)的实现过程 - 2019/05/02/
  283. LinkBuf设计与实现 - 2019/05/08/
  284. CHECKTABLE实现 - 2019/03/05/
  285. 8.0Functionalindex的实现过程 - 2019/02/06/
  286. Innodb缓冲池刷脏的多线程实现 - 2018/09/02/
  287. 连接与认证过程 - 2018/08/07/
  288. 8.0原子DDL的实现过程续 - 2018/07/02/
  289. binlogcrashrecovery - 2018/07/05/
  290. changemasterto - 2018/05/09/
  291. 协议模块浅析 - 2018/04/05/
  292. InnoDB的readview,回滚段和purge过程简介 - 2018/03/01/
  293. 原子DDL的实现过程 - 2018/03/02/
  294. 常用SQL语句的MDL加锁源码分析 - 2018/02/01/
  295. 权限浅析 - 2018/02/03/
  296. 新连接的建立 - 2018/02/07/
  297. InnoDBLRUList刷脏改进之路 - 2017/11/05/
  298. Innodb引擎Redo日志存储格式简介 - 2017/09/07/
  299. 一条insert语句的执行过程 - 2017/09/10/
  300. MySQLreplicationpartialtransaction - 2017/08/03/
  301. mysql认证阶段漫游 - 2017/08/05/
  302. 内存分配机制 - 2017/08/06/
  303. SHUTDOWN过程 - 2017/08/09/
  304. InnoDB异步IO工作流程 - 2017/07/10/
  305. Tokudb序列化和反序列化过程 - 2017/06/01/
  306. InnoDBRepeatableRead隔离级别之大不同 - 2017/06/07/
  307. MySQL半同步复制数据一致性分析 - 2017/04/01/
  308. MySQLBINLOG半同步复制数据安全性分析 - 2017/03/07/
  309. 词法分析及其性能优化 - 2017/02/04/
  310. 无法revoke单库或单表权限 - 2016/10/06/
  311. QueryCache并发处理 - 2016/08/09/
  312. 网络通信模块浅析 - 2016/07/04/
  313. QueryCache内部剖析 - 2016/07/09/
  314. InnoDB伙伴内存分配系统实现分析 - 2020/09/04/
  315. PerconaXtraBackup备份原理 - 2016/03/07/
  316. 一些流行引擎存储格式简介 - 2017/10/04/
  317. InnoDB对binlog_format的限制 - 2018/08/04/
  318. 8.0对WAL的设计修改 - 2018/06/01/
  319. 8.0WriteSet并行复制 - 2018/06/04/
  320. MySQL8.0资源组(ResourceGroups) - 2018/05/03/
  321. MySQL的预编译功能 - 2018/04/07/
  322. (deleted)临时空间 - 2018/04/08/
  323. innodb_buffer_pool_size在线修改 - 2018/03/06/
  324. LOGICAL_CLOCK并行复制原理及实现分析 - 2017/12/03/
  325. MySQL5.7外部XAReplication实现及缺陷分析 - 2017/11/06/
  326. 数据一样checksum不一样 - 2017/10/08/
  327. 浅谈MySQL5.7XA事务改进 - 2017/09/05/
  328. 利用gdb跟踪MDL加锁过程 - 2017/09/06/
  329. 到底是谁执行了FTWL - 2017/08/04/
  330. commontableexpression - 2017/04/05/
  331. 5.7errorlog时区和系统时区不同 - 2017/01/09/
  332. 直方图的实现与分析 - 2016/10/09/
  333. 执行计划缓存设计与实现 - 2016/09/04/
  334. MySQL5.7新特性系列四 - 2016/08/01/
  335. MyRocks简介 - 2016/08/03/
  336. MySQL5.7新特性系列三 - 2016/07/01/
  337. 5.7代价模型浅析 - 2016/07/02/
  338. innodb锁分裂继承与迁移 - 2016/06/01/
  339. MySQL5.7新特性系列二 - 2016/06/02/
  340. 内部临时表 - 2016/06/07/
  341. MySQL5.7新特性系列一 - 2016/05/02/
  342. innodbbufferpool相关特性 - 2016/05/04/
  343. InnoDBtransactionhistory - 2016/02/03/
  344. 线程池 - 2016/02/09/
  345. 优化器MRR&BKA - 2016/01/04/
  346. droptable的优化 - 2016/01/07/
  347. IndexConditionPushdown(ICP) - 2015/12/08/
  348. 企业版特性一览 - 2015/12/10/
  349. StatementDigest - 2015/11/02/
  350. MDL实现分析 - 2015/11/04/
  351. 跟踪Metadatalock - 2015/10/02/
  352. MySQL权限存储与管理 - 2015/10/10/
  353. 5.6并行复制恢复实现 - 2015/09/07/
  354. 5.6并行复制事件分发机制 - 2015/09/09/
  355. OnlineDDL工具gh-ost支持阿里云RDS - 2018/05/02/
  356. MariaDB10.2前瞻 - 2016/09/03/
  357. InnoDBPageCompression - 2015/08/01/
  358. MySQL5.6.26ReleaseNote解读 - 2015/08/03/
  359. MariaDBInnoDB表空间碎片整理 - 2015/08/05/
  360. MySQL内存分配支持NUMA - 2015/07/06/
  361. MariaDBRole体系 - 2015/06/09/
  362. 5.6.23InnoDB相关Bugfix - 2015/02/02/
  363. MariaDB10.2GA - 2017/06/10/
  364. OracleOpenWorld2016见闻 - 2016/10/02/
  365. PerconaLive2016见闻 - 2016/10/03/
  366. MariaDBDeveloperMeeting2016 - 2016/10/04/
  367. OOW2015总结MySQL篇 - 2015/11/01/
  368. AliSQL那些事儿 - 2016/09/01/
  369. MySQL的那些网络超时错误 - 2017/05/04/
  370. 备库Seconds_Behind_Master计算 - 2016/03/09/
  371. MySQL锁问题最佳实践 - 2016/03/10/
  372. mysqldumptips两则 - 2016/02/10/
  373. 物理备份死锁分析 - 2016/01/05/
  374. GTID不一致分析 - 2016/01/08/
  375. MySQL优化器range的代价计算 - 2015/11/07/
  376. 索引过滤性太差引起CPU飙高分析 - 2015/10/03/
  377. openfilelimits - 2015/08/07/
  378. 外键删除bug分析 - 2015/07/07/
  379. 浮点型的显示问题 - 2015/07/10/
  380. MySQLSort分页 - 2015/06/04/
  381. binlogevent中的errorcode - 2015/06/05/
  382. InnoDB预读VSOracle多块读 - 2015/05/04/
  383. setnames都做了什么 - 2015/05/07/
  384. binlog位点刷新策略 - 2015/05/10/
  385. UPDATE交换列单表和多表的区别 - 2015/04/08/
  386. GTID下auto_position=0时数据不一致 - 2015/04/10/
  387. 并发Replaceinto导致的死锁分析 - 2015/03/01/
  388. usingfilesortVSusingtemporary - 2015/03/04/
  389. lower_case_table_names使用问题 - 2015/03/07/
  390. InnoDB丢失自增值 - 2015/02/05/
  391. 5.5和5.6时间类型兼容问题 - 2015/02/06/
  392. binlogevent有序性 - 2014/12/05/
  393. server_id为0的Rotate - 2014/12/06/
  394. text字段数 - 2014/10/02/
  395. key分区算法演变分析 - 2015/01/06/
  396. 5.6GTID和存储引擎那会事 - 2014/12/02/
  397. GTID和升级 - 2014/09/02/
  398. 索引篇 - 2017/02/05/
阅读全文 »

《MySQL45讲》读书笔记(十三):自增主键,自增锁

发表于 2020-11-16 | 分类于 mysql
字数统计: 2.6k

此文为极客时间:MySQL实战45讲的39节的学习笔记

一、自增值的保存方式

我们前面提到过,自增主键的连续性使得表在空间上排列的更紧密,提高了空间利用率,避免了页分裂。实际上,自增主键大部分情况下可以保证连续性,但是也有例外的时候。

当我们创建表的时候,表结构会存储在 .frm 文件中,但是并不会一起保存自增值。MyISAM 引擎将自增值保存在数据文件,而 innodb 在 mysql8.0 之前只会将自增值保存在内存。

也就是说,对于 innodb 引擎来说,每次重启后,都需要寻找表中最大的自增值 X,将 X+1 作为新的自增值,如果当前最大值为 10,自增值就会是11,如果删除了自增值为 10 的行,那么此时重启数据库,新插入的行自增值就会变成11,当自增值是主键的时候,相当于从新增变成了更新。

而 8.0 以后,innodb 会将自增值的变更记录到 redo log,重启以后依靠日志重做。

二、自增值的自增机制

在 mysql 中,如果字段 id 被定义为 AUTO_INCREMENT,那么插入时:

  1. 如果插入数据时 id 字段指定为 0、null 或未指定值,那么就把这个表当前的 AUTO_INCREMENT 值填到自增字段;
  2. 如果插入数据时 id 字段指定了具体的值,就直接使用语句里指定的值。

根据要插入的值和当前自增值的大小关系,自增值的变更结果也会有所不同。假设,某次要插入的值是 X,当前的自增值是 Y。

阅读全文 »

《MySQL45讲》读书笔记(十二):order by

发表于 2020-11-15 | 分类于 mysql
字数统计: 1.2k

此文为极客时间:MySQL实战45讲的16节order by相关内容的笔记

一、order by 的执行流程

1.全字段排序

假如此时有这么一张表:

1
2
3
4
5
6
7
8
9
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`city` varchar(16) NOT NULL,
`name` varchar(16) NOT NULL,
`age` int(11) NOT NULL,
`addr` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `city` (`city`)
) ENGINE=InnoDB;

现在要按姓名排序查询杭州1000个人的信息

1
select city,name,age from t where city='杭州' order by name limit 1000;

这条 sql 的执行流程如下:

  1. 在内存中初始化 sort_buffer,放入 city,name,age 三个字段
  2. 从 city 索引树找到 city = '杭州' 叶子节点存放的主键 id
  3. 回表根据主键 id 找到数据,取出全部字段放入 sort_buffer
  4. 重复上述过程,直到全部符合条件的数据都放入内存
  5. 在 sort_buffer 对数据按 name 进行排序
  6. 按照排序结果取前 1000 行返回

因为先查了全部需要字段才排序,我们把这个叫做全字段排序。

阅读全文 »

《MySQL45讲》读书笔记(十一):join

发表于 2020-11-13 | 分类于 mysql
字数统计: 3.1k

此文为极客时间:MySQL实战45讲的 34、35节join相关内容的笔记

一、Join的查询流程

假设我们有表 t1 和表 t2,他们都有字段 a,b,其中 t1 有 100条数据,而 t2 有1000条数据。

我们要执行这么一条sql:

1
select * from t1 join t2 on t2.a = t1.a

执行流程就是会这样的:

  1. 先取出 t1 的一条数据 R;
  2. 然后根据 R 的 a 字段 去 t2 表里找复合条件的数据;
  3. 找到以后,就和 R 的数据拼起来作为结果集的一部分;
  4. 重复以上步骤,直到遍历完 t1 最后一条数据。

其中,被驱动表的关联条件是否有索引对性能有着很大的影响。

二、关联条件有索引

1.NJL算法

阅读全文 »

《MySQL45讲》读书笔记(十):count

发表于 2020-11-12 | 分类于 mysql
字数统计: 904

此文为极客时间:MySQL实战45讲的14节count相关内容的笔记

一、count的查询过程

count() 函数用于查询数据的数量,不同的引擎有不同的实现。

在 MySAM 引擎会专门记录表的总数;而在 innodb 中,由于 MVCC 的原因,在统计数量的时候需要一行一行的判断当前数据是否对查询的事务的可见的。此外,show table status的 Rows 字段也能获取表的总条数,但是这只是预估值,实际上并不准确。

因此,表的遍历是无法避免的,但是 innodb 也有针对此做出优化:

主键索引树的叶子节点是数据行,而普通索引树的叶子节点是主键,针对 count 操作遍历那颗树都是一样的,因此查询的时候回找到最小的那颗索引树进行遍历。

二、计数操作的实现

计数这个功能通过 redis 也可以实现,即在 redis 中设定一个值用于计数,但是在遇到异常停止服务后不免会遇到数据丢失的问题。

如果结合 mysql 来做,即 redis 更新数据后再变更数据库里的数据,读取的时候直接从 redis 读,这样虽然一定程度避免了数据丢失的问题,但是却有可能导致数据不一致。举个例子:

现在计数是5,我们要为计数+1

阅读全文 »

《MySQL45讲》读书笔记(九):关于元数据锁 online ddl插队问题

发表于 2020-11-11 | 分类于 mysql
字数统计: 623

此文为极客时间:MySQL实战45讲的元数据锁相关部分问题的思考总结

一、读写锁堵塞

前面在锁这块介绍了元数据锁(MDL 锁)。元数据锁是一种读写锁,他的读读不互斥,读写和写写是互斥的。因此我们参考下面的时序图:

image-20201111201636187
image-20201111201636187

现在等待队列中有四个 session 要获取锁:

  • 由于 sessionA 和 sessionB 都是读操作,读读不互斥,因此两个 session 都持有读锁;
  • sessionA 和 sessionB 还未释放,此时 sessionC 要获取写锁,由于读写互斥,此时 sessionC 发生堵塞;
  • 由于写锁的获取优先级高于读锁,sessionC 的写锁没获取到,后面其他 session 的读锁也无法获取到。此时 sessionD 堵塞;

上面是一个很典型的读写锁堵塞的场景。但是实际测试的时候,会出现 sessionC 和 sessionD 都堵塞了,但是将 sessionA 和 sessionB 提交以后,sessionC 仍然保持堵塞状态,必须等 sessionD 也提交以后,才会继续执行。也就说,sessionD 好像发生了一个插队的现象。

二、锁降级

我们知道 mysql 有一个 online ddl,即 执行 ddl 的时候不会直接锁表导致无法执行其他查询的操作。其实这涉及到一个锁降级的概念。即原本流程是:

  • 拿写锁
  • 做 DDL
  • 释放锁
阅读全文 »

《MySQL45讲》读书笔记(八):间隙锁的加锁条件

发表于 2020-11-09 | 分类于 mysql
字数统计: 2.7k

此文为极客时间:MySQL实战45讲的 21、30、40节锁相关部分的总结

间隙锁的加锁原则

间隙锁加锁的情况,包含了两个“原则”、两个“优化”和一个“bug”。

  1. 原则 1:加锁的基本单位是 next-key lock。即间隙锁+行锁(前开后闭区间)。
  2. 原则 2:查找过程中访问到的对象才会加锁。
  3. 优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁。
  4. 优化 2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock 退化为间隙锁。
  5. 一个 bug:唯一索引上的范围查询会访问到不满足条件的第一个值为止。

以下面的表为例:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c` (`c`)
) ENGINE=InnoDB;

insert into t values(0,0,0),(5,5,5),
(10,10,10),(15,15,15),(20,20,20),(25,25,25);

我们需要注意一下,c 是加了索引的,而 d 没有。直观点就是下图:

image-20201108173043844
image-20201108173043844

一.唯一索引等值查询间隙锁

等值查询的间隙锁
等值查询的间隙锁
阅读全文 »

JDK1.8新特性(四):Optional类

发表于 2020-11-03 | 分类于 java
字数统计: 1.5k

概述

针对我们熟悉又深恶痛绝的空指针异常 NullPointException,JDK8 新增了一个用于处理可能出现的空对象的类 Optionalt ,也就意味着。他可以理解为对对象的包装类,对原本的类进行了增强,结合 Lambda 表达式和函数式接口,我们可以安心的操作一些可能是 null 的对象,避免繁琐的空值检验。

举个例子:

我们常见过一些处理对象的方法,有些时候经常能见到这样的写法:

1
2
3
4
5
public static Optional<TestBean> getBean() {
Optional<TestBean> bean = null;
// 业务逻辑
return bean;
}

有些时候可能是try-catch块的限制,或者一些其他什么原因,我们的方法可能会返回一个 null,这样对于调用方来说,如果没有做空值检验就很有可能报 NPE,使用 Optional,我们可以显示的声明返回值可能是 null,并且返回一个 Option 类,调用方可以直接使用内置的方法进行处理。

1
2
3
4
5
6
7
8
public Optional<TestBean> getStr() {
Optional<TestBean> bean = null;
// 业务逻辑
return bean;
}

// 调用方
TestClass.getBean().isPresent();

一、创建 Optional 对象

在开始了解如何创建 Optional 对象之前,我们要明确,和 Integer 一样,Option 分为类本身与成员变量 value,其中 value 是可能为 null。

创建 Optional 对象有三种方法:

阅读全文 »
1…456…10

99 日志
15 分类
22 标签
RSS
© 2022 Createsequence
主题 — NexT.Gemini v5.1.4
0%