- 博客(5)
- 收藏
- 关注
原创 04 | 深入浅出索引
索引的常见模型 哈希表:仅使用等值查询 有序数组:二分查找,区间查询友好,更新效率低,仅适用于静态存储引擎 搜索树:由于二叉树高度较高,磁盘IO次数过多,所以实际使用N叉树。树根的数据块缓存于内存,树的第二层也有很大概率在内存中,进一步减少了访问磁盘的平均次数。 InnoDB索引模型 每一个索引在InnoDB中都对应一颗B+树。 主键索引的叶子结点存的是整行数据(聚簇索引) 非主键索引的叶子结...
2018-12-18 19:27:27
144
原创 03 | 事务隔离
隔离性与隔离级别 SQL标准的事务隔离级别包括:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeated read)和串行化(serializable)。 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。 可重复读是指,一个事务执行过程中看到的数据,总是跟这个事务...
2018-12-18 18:49:56
80
原创 Tars之RegistryServer
主控服务(路由+管理):提供节点的地址查询、发布、启停、管理等操作,以及对服务上报心跳的管理,通过它实现服务的注册与发现。 模块划分: 全量或增量加载路由信息 node超时检测 服务状态检测 供tars服务获取路由的Servant 供node访问的Servant 服务启动流程: //全量和增量加载路由信息的线程 _reapThread.init(); _reapThread.start()...
2018-12-12 18:55:54
623
原创 02 | 日志系统 一条更新语句是如何执行的
与查询流程不一样,更新流程涉及两个重要的日志模块:redo log(重做日志)和binlog(归档日志) redo log 当有一条记录需要更新的时候,InnoDB引擎会先将记录写入redo log里,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候,将这个记录更新到磁盘里,这个更新往往是在系统比较空闲的时候做。redo log是有大小限制的,当文件被写满,此时需要...
2018-12-06 11:58:31
111
原创 01 | 基础架构 一条查询语句是如何执行的
大体来说,mysql可以分为Server层和存储引擎层两部分。 server层包含连接器、查询缓存、分析器、优化器、执行器等,涵盖mysql的大多数核心功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层负责数据的存储和提取。其架构师插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。 连接...
2018-12-06 10:32:07
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人