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. 自动故障转移:在一些高级配置中,如果主服务器宕机,可以从服务器中选举出一个成为新的主服务器,实现自动故障转移。

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

相关推荐
是程序喵呀17 分钟前
MySQL备份
android·mysql·adb
指尖上跳动的旋律25 分钟前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶36 分钟前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝2 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067122 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!2 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence2 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236582 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库