MySQL 读书笔记(一) 体系结构

感觉好久没有看MySQL相关的书了,最近边复习,边整理下感觉重要的知识点,一点点的由简入繁,先从整体概念上理解下,扩充下整个知识图谱。

一、MySQL 体系结构

image.png

基础中有两个重要概念,数据库和数据库实例。

数据库:文件的集合,依照某种数据模型组织并存放于二级存储器中的数据集合。

数据库实例:是程序,位于用户与操作系统之间的一层数据库管理软件,用户对于数据库的任何操作(DML,DDL)都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

看了,最开始的架构图,可以了解到MySQL 由以下组成

1、连接池组件

2、管理和工具组件

3、接口组件

4、解析器组件

5、优化器组件

6、缓存组件

7、插件式的存储引擎

8、物理文件

注意:存储引擎是基于表,而不是数据库

二、存储引擎

下面介绍几个重要的存储引擎的特点

1、InnoDB

特点:

  • 支持事物,主要面向在线数据处理OLTP

  • 支持行锁设计

    • 分为共享锁和排它锁
    • 行锁有基本的三种算法    
              - record: 使用 ‘=’ 符号时,只查询一行记录的时候。
              - Gap: 记录不存在的时候退化为这个,相同间隙锁不冲突, 查询id>20 其实也有可能锁住11 ,因为整个间隙都加锁
      • Next key: Gap + record
  • 支持外健.

  • 使用next-key locking的策略来避免幻读

  • 通过多版本并发控制(MVCC)获得高并发性,并实现了4种隔离级别,默认REPEATABLE.

  • 插入缓冲(insert buffer)

    • 插入缓冲,并不是缓存的一部分,而是物理页,对于非聚集索引的插入或更新操作,不是每一次直接插入索引页.而是先判断插入的非聚集索引页是否在缓冲池中.如果在,则直接插入,如果不再,则先放入一个插入缓冲区中.然后再以一定的频率执行插入缓冲和非聚集索引页子节点的合并操作
  • 二次写(double write)

    • InnoDB 的Page Size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘是以Page为单位进行操作的。而计算机硬件和操作系统,在极端情况下(比如断电)往往并不能保证这一操作的原子性,16K的数据,写入4K 时,发生了系统断电/os crash ,只有一部分写是成功的,这种情况下就是 partial page write 问题.
    • 所以简单的说就是,在将数据写盘的时候断电了,一部分数据丢失后,根本不能从redo log来进行恢复了。其原理是在写数据页之前,先把这个数据页写到一块独立的物理文件位置(ibdata),然后再写到数据页。在宕机重启后,先通过该副本还原数据页,在使用redo log.
  • 自适应哈希索引

    • nnoDB采用自适用哈希索引技术,它会实时监控表上索引的使用情况,如果认为建立哈希索引可以提高查询效率,则自动在内存中的“自适应哈希索引缓冲区建立哈希索引
  • 预读

    • 分为线性预读和随机预读

存储其采用了聚集的方式,因此数据都是顺序存储,如没有显示的指定主键,会为每一行数据生成一个6字节的ROWID作为主键

2、MyISAM

不支持事物,表锁设计,支持全文检索,主要面向OLAP

缓冲池之缓存索引文件不缓冲数据

表由MYD 和MYI 组成,MYD存储数据,MYI 存储索引文件

3、NDB

集群存储引擎类似Oracle的RAC集群

数据全部存放在内存中

(JOIN)连接操作是在mysql数据库层完成的,而不是存储引擎层完成。(复杂的连接操作需要巨大的网络开销,因此查询巨慢)

4、Memory

表中数据存放在内存中,重启数据消失

适用于临时数据的临时表,数据仓库维度表。

默认是哈希索引,而不是B+树索引

只支持表锁,并发性能差,并不支持TEXT和BLOB类型。

存储变长字段(varchart)时,是按照定长字段(char)方式进行,因此会浪费内存

如果MYSQL数据库使用MEMORY存储引擎作为临时表来存放查询的中间结果集。如果结果集大于Memory存储引擎设置的容量,又或者其中包含TEXT 和BLOB 数据类型字段,则MySQL数据库会把其转换到MYISAM存储引擎表而存放到磁盘中。因M有ISAM不缓存数据文件,所以临时表的查询会损失性能。

先整体回顾了下大概的结构和知识点,下周主要针对InnoDB 做一个完整性的细节回顾
角儿旮旯

数据中心机房是现代信息技术的核心设施,它承载着企业的重要数据和服务,因此,其基础设计与规划至关重要。在制定这样的方案时,需要考虑的因素繁多,包括但不限于以下几点: 1. **容量规划**:必须根据业务需求预测未来几年的数据处理和存储需求,合理规划机房的规模和设备容量。这涉及到服务器的数量、存储设备的容量以及网络带宽的需求等。 2. **电力供应**:数据中心是能源消耗大户,因此电力供应设计是关键。要考虑不间断电源(UPS)、备用发电机的容量,以及高效节能的电力分配系统,确保电力的稳定供应并降低能耗。 3. **冷却系统**:由于设备密集运行,散热问题不容忽视。合理的空调布局和冷却系统设计可以有效控制机房温度,避免设备过热引发故障。 4. **物理安全**:包括防火、防盗、防震、防潮等措施。需要设计防火分区、安装烟雾探测和自动灭火系统,设置访问控制系统,确保只有授权人员能进入。 5. **网络架构**:规划高速、稳定、冗余的网络架构,考虑使用光纤、以太网等技术,构建层次化网络,保证数据传输的高效性和安全性。 6. **运维管理**:设计易于管理和维护的IT基础设施,例如模块化设计便于扩展,集中监控系统可以实时查看设备状态,及时发现并解决问题。 7. **绿色数据中心**:随着环保意识的提升,绿色数据中心成为趋势。采用节能设备,利用自然冷源,以及优化能源管理策略,实现低能耗和低碳排放。 8. **灾难恢复**:考虑备份和恢复策略,建立异地灾备中心,确保在主数据中心发生故障时,业务能够快速恢复。 9. **法规遵从**:需遵循国家和地区的相关法律法规,如信息安全、数据保护和环境保护等,确保数据中心的合法运营。 10. **扩展性**:设计时应考虑到未来的业务发展和技术进步,保证机房有充足的扩展空间和升级能力。 技术创新在数据中心机房基础设计及规划方案中扮演了重要角色。例如,采用虚拟化技术可以提高硬件资源利用率,软件定义网络(SDN)提供更灵活的网络管理,人工智能和机器学习则有助于优化能源管理和故障预测。 总结来说,一个完整且高效的数据中心机房设计及规划方案,不仅需要满足当前的技术需求和业务目标,还需要具备前瞻性和可持续性,以适应快速变化的IT环境和未来可能的技术革新。同时,也要注重经济效益,平衡投资成本与长期运营成本,实现数据中心的高效、安全和绿色运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构技术专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值