VXLAN—构建Overlay容器网络
由于 VLAN 实现中的 VLAN ID 仅有12位,只能划分4096个虚拟局域网网段,对于云计算等领域而言,其用户远远不止4096个。并且,VLAN 依赖于交换机等物理设备的实现,一旦升级物理设备,集群网络可能需要重新配置。因此,基于上述的限制,VMware、Cisco 等大型网络企业推出了 VXLAN 解决方案。 »
由于 VLAN 实现中的 VLAN ID 仅有12位,只能划分4096个虚拟局域网网段,对于云计算等领域而言,其用户远远不止4096个。并且,VLAN 依赖于交换机等物理设备的实现,一旦升级物理设备,集群网络可能需要重新配置。因此,基于上述的限制,VMware、Cisco 等大型网络企业推出了 VXLAN 解决方案。 »
Python语言的metaclass特性一直是初学者的”噩梦”,当初博主在学习元类时也是一头雾水,但是一旦真正的理解了什么是”动态语言”之后,元类就不再神秘与难以理解了。Python这门动态语言最大的特性就是不需要一个类的字节码就能够在运行时创建出一个类,这是理解元类最为关键的信息。 »
MySQL服务端在发送数据时,为了减少数据在用户空间和内核空间的复制次数,往往会使用缓冲区对数据进行缓冲。那么,如果客户端在接收大量数据时,选择不接收,或者处理非常慢的时候,会影响MySQL的正常运行吗? »
由于硬盘和内存的造价差异,一台主机实例的硬盘容量通常会远超于内存容量。对于数据库等应用而言,为了保证更快的查询效率,通常会将使用过的数据放在内存中进行加速读取。LRU算法经常用于数据的置换,但InnoDB的LRU却更加独特。 »
MySQL的异步复制算的上是一种典型的单领导者复制模式,就复制本身而已并无特殊之处。但是复制的细节,例如binlog的格式选取,从节点如何在保证数据准确的情况下进行并行复制,MySQL的实现方案总是能令人眼前一亮。 »
在InnoDB存储引擎中,一个事务的执行将涉及到3个日志的数据写入: redo log,undo log以及binlog。其中redo log以及binlog主要实现事务的原子性和持久性,而undo log主要用于实现事务的隔离性。 »
锁在InnoDB存储引擎中的使用远比我们想象中的更加频繁,及时是一条最为简单的update set语句,其中也涉及到了各种锁的使用。包括常说的一致性锁定读,解决幻读等场景中,同样包含了锁的大量使用。 »
在MySQL中, 锁机制是并发条件下保护数据一致性与稳定性的一个非常重要的机制, 并且事务的实现也依赖于于锁机制。 其锁定的数据不单包括数据行记录, 同时也包括缓冲池中的LRU列表数据、日志数据等。 悲观锁(FOR UPDATE)则是日常开发中使用最多的一种锁, 但是, 由于事务隔离级别的多样性导致了悲观锁在使用时常常会有不同的表现, 死锁在程序员稍不注意时就会发生。 »
在上一篇文章中, 通过解析InnoDB存储引擎的.ibd数据存储文件得到了数据与索引的真实组织方式: 数据通过聚集索引在逻辑上连续存放, 二级索引保存数据主键ID(Row ID), 多棵B+Tree组合起来提供高效的索引数据查询。 除辅助索引(二级索引)外, 联合索引与覆盖索引在日常中也会经常用到。 »
MySQL是基于磁盘进行数据存储的关系型数据库, 所有的数据、索引等数据均以磁盘文件的方式存储, 在有需要时载入内存读取。 为了加快数据查询的效率, 通常会在一些字段上添加索引, 但是许多文档都会告诉我们, 不要添加太多的索引, 索引不要太长, 使用数字或者空字符串来代替NULL值, 为什么会有这些建议? 这些建议又是否正确? 答案都能够从MySQL数据的物理存储方式中找到。 »