当前位置: 首页 > article >正文

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

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


http://www.kler.cn/a/383746.html

相关文章:

  • MySQL数据库——复制表数据与结构
  • [react 3种方法] 获取ant组件ref用ts如何定义?
  • esp8266_TFTST7735语音识别UI界面虚拟小助手
  • Unity中有什么情况下是需要用UniTask替代其他异步方式的吗?
  • FLV视频封装格式详解
  • 基于python+django的外卖点餐系统
  • uni生成海报并保存
  • 【MyBatis】【基于轻量型架构的WEB开发】课程 课后习题 章节测试
  • 基于C++深度优先遍历迷宫
  • 如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
  • Java 8 Stream用法与常见问题和解决方式
  • Redis内存管理——针对实习面试
  • Charles简单压力测试
  • Unity中RTS游戏的设计模式处理: 游戏中的对象选择和命令委托的基本框架
  • 解读JobScheduler的jobs.xml
  • 判断二叉搜索树(递归)
  • 【LeetCode】【算法】647. 回文子串
  • 卡码网KamaCoder 127. 骑士的攻击
  • 梧桐数据库之查询特定日期的套餐价格分享
  • (超级详细版)Java基础:Java常用变量详解
  • T507 buildroot linux4.9之MCP2515 can网络开发调试
  • 耕地类项目知识点汇总(持续完善中……)
  • ubuntu22.04安装conda
  • 鸿蒙-promptAction.showToast基于PC屏幕底部提示
  • Ubuntu 安装 RTL8811cu 网卡驱动
  • CTFshow之信息收集第1关到10关。详细讲解