mysql特性

InnoDB

InnoDB存储引擎是MySQL数据库中非常强大的一个组件,以其高性能、可靠性和丰富的特性而闻名。

InnoDB存储引擎将数据存储在磁盘上,但为了提高性能,它使用内存中的缓冲池(Buffer Pool)来缓存频繁访问的数据和索引。InnoDB的数据存储结构主要包括:

  1. 表空间(Tablespace):InnoDB的数据和索引都存储在表空间中,它是InnoDB存储结构的最高层。表空间可以包含多个文件。
  2. 段(Segment):表空间被划分为不同的段,每个段对应不同类型的数据结构,如索引段、数据段等。
  3. 区(Extent):段进一步被划分为区,每个区包含64个连续的页。
  4. 页(Page):InnoDB存储的基本单位是页,每个页默认大小为16KB。页可以包含数据、索引、事务日志等。
  5. 行(Row):数据在页中以行的形式存储。

索引和数据存储InnoDB支持两种类型的索引,其每个表自动创建一个聚簇索引,通常是主键。聚簇索引的叶节点直接包含行数据,这意味着数据和索引是一起存储的,除了聚簇索引外,InnoDB还支持辅助索引,InnoDB的事务处理是其核心特性之一,它支持ACID属性。

InnoDB使用日志系统来保证事务的持久性和一致性:

  1. 重做日志:记录事务对数据的修改,用于崩溃恢复。
  2. 回滚日志:记录事务对数据的修改前的版本,用于事务回滚和MVCC。

InnoDB支持多种锁机制,例如行级锁中的共享锁和排他锁,共享锁允许事务读取一行数据,但不能修改它。多个事务可以同时对同一行数据加共享锁,排他锁:允许事务修改一行数据,但不允许其他事务读取或修改它。

MyISAM

MyISAM在MySQL 5.5版本之前是默认的存储引擎,MyISAM不支持事务处理,这意味着它不适合需要事务支持的应用场景,MyISAM使用表级锁而不是行级锁,在进行数据更新时,会锁定整个表,这限制了并发写入的能力,在MyISAM表中,写入操作会阻塞其他写入和读取操作。

MyISAM的内部结构MyISAM表由以下三种类型的文件组成:

.frm文件:存储表的定义(结构)。

.MYDMYData文件:存储实际的表数据。

.MYIMYIndex文件:存储表的索引。

MyISAM是非聚集索引,与InnoDB的聚集索引不同,

MyISAM适合于那些对读取性能要求高、不需要事务支持的应用,但其崩溃恢复与InnoDB相比,MyISAM在崩溃后可能会出现数据损坏,需要手动修复,而InnoDB具备强大的崩溃恢复机制。

mysql集群

MySQL集群是一种让数据库分布在多台服务器上的技术,这样可以提高处理大量数据的能力,同时也可以在某些服务器出现问题时,保证数据不会丢失,服务不会中断。

为什么需要MySQL集群?

  1. 提高性能:如果有很多用户同时访问数据库,一个数据库服务器可能会忙不过来。有了集群,不同的服务器可以同时处理不同的请求。
  2. 数据安全:在集群中,每个服务器都有其他服务器的数据备份,这样即使某个服务器坏了,数据也不会丢。
  3. 负载均衡:集群可以将不同的任务分配给不同的服务器,这样每个服务器都不会过载,可以更稳定地工作。

MySQL集群怎么工作的?

  1. MySQL集群会根据一定的规则(比如数据的类型或者数据的大小),把数据分成很多小块,这些小块叫做分片,每个分片都存储在不同的服务器上。
  2. 在MySQL集群中,通常有一个或几个服务器专门负责处理写入操作,其他的服务器负责处理读取操作,这样可以减少单个服务器的压力,为了保证数据的一致性。
  3. MySQL集群会不断地在各个服务器之间同步数据。

通过集群,数据库可以处理更多的数据,也可以在出现问题时快速恢复,保证服务的连续性。

主从复制

MySQL主从复制是一种数据复制技术,它允许你将一个MySQL数据库服务器(主服务器)上的数据复制到一个或多个其他的MySQL服务器(从服务器),这样就可以在多个服务器上拥有相同的数据副本,从而提高数据库的读取性能和可用性。

主服务器上的数据变更会被复制到从服务器上,保持数据的一致性,主服务器通常处理所有的写入操作,而从服务器处理读取操作,而如果主服务器出现问题,可以从服务器接管服务,保证数据库的持续可用。

主从复制的工作原理:

  1. 二进制日志:主服务器会记录所有的数据变更操作到二进制日志中。
  2. 复制线程:从服务器上有一个复制线程,它会连接到主服务器,请求获取二进制日志中的数据变更。
  3. 数据同步:主服务器将数据变更发送给从服务器,从服务器上的复制线程将这些变更应用到自己的数据库中,从而实现数据的同步。
  4. 自动故障转移:在一些高级配置中,如果主服务器宕机,可以从服务器中选举出一个成为新的主服务器,实现自动故障转移。

主从复制通过在多个服务器之间同步数据,提供了一种提高数据库性能、可用性和数据安全性的有效方法。

相关推荐
小陈工2 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull6 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸6 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain6 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希7 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神7 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员7 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java7 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb