mysql开篇明义之mysql存储引擎

本文介绍了MySQL中的核心组件——存储引擎,并详细对比了InnoDB和MyISAM这两种最常用的存储引擎的特点及适用场景。

mysql开篇明义之mysql引擎

mysql是我们最常用的数据库之一,相信很多人都用过,今天就来介绍一下mysql的核心组件——存储引擎。
概念引入:

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

以上是百度百科对存储引擎的介绍,通过这个介绍我们可以看到mysql中有很多种存储引擎,我们可以通过 SHOW ENGINES;来查看自己的数据库支持的存储引擎。
这就是我在我数据库中执行以上SQL查询到的结果
由以上结果可以看到我的mysql共查出来9条结果,但是最后一条的FEDERATED引擎是不支持的,所以在不进行任何配置变动的情况下,我的数据库支持8种存储引擎,其中最常用的是InnoDB和MyISAM。
MyISAM和InnoDB的区别
由以上结果中的Comment列中可以看出,InnoDB引擎的介绍为Supports transactions, row-level locking, and foreign keys. 即支持事务、行级锁和外键。所以可以看到两者的主要区别为:

区别项InnoDBMyISAM
是否默认引擎
是否支持事务
锁支持行级锁、表级锁表级锁
是否支持外键
索引类型非聚集索引,叶子结点保存的是数据文件指针聚集索引,叶子结点保存的是数据文件

上面表格中是两种引擎一些比较重要的区别,当然两者的区别还有很多,但是我认为上面几点是两者最主要的区别。大家如果还想了解更详细的关于mysql存储引擎的知识,可以去这里,有详细的关于各个存储引擎的中文介绍。

### 使用 MySQL Binlog 进行数据恢复 #### 启用 Binary Log 功能 为了能够使用二进制日志 (Binlog) 来恢复数据,首先需要确认服务器已经启用了此功能。如果尚未启用,则需修改 `my.cnf` 或者 `my.ini` 文件中的 `[mysqld]` 段落加入如下设置并保存更改: ```ini server-id = 1 log_bin = /path/to/your/logfile/mysql-bin.log expire_logs_days= 7 max_binlog_size = 100M ``` 之后重启 MySQL 服务使配置生效[^1]。 #### 查看当前的 Binlog 状态 连接到 MySQL 数据库后执行以下 SQL 命令来查看当前的日志状态以及获取必要的位置信息: ```sql SHOW MASTER STATUS; ``` 这将返回有关最新的 binlog 文件名及其最后写入的位置等重要细节[^3]。 #### 寻找合适的起始和停止点位 当准备从特定的时间段内提取变更事件时,可以根据时间戳或者已知的操作前后的确切时刻找到对应的起点(`--start-datetime`) 和终点 (`--stop-datetime`) 参数;也可以基于确切的位置偏移量(`--start-position`, `--stop-position`)来进行定位。对于后者来说,通常是在发生错误之前最近一次成功的备份基础上计算得出这些数值[^2]。 #### 提取并应用 Binlog 记录 一旦确定好了上述参数,就可以利用 `mysqlbinlog` 工具读取出相应的更新语句,并将其重定向给 MySQL 客户端以重新应用于目标数据库实例上。这里给出一个具体的例子说明如何按照指定范围内的 position 执行回滚操作: ```bash cd /usr/local/mysql/bin ./mysqlbinlog --no-defaults -v \ /usr/local/mysql/data/mysql-bin.000001 \ --start-position='510879666' \ --stop-position='521877693' |\ ./mysql -uroot -ppassword --force --default-character-set=utf8mb4 ``` 注意替换路径、文件名称及密码等内容使之匹配实际环境情况。另外加上 `--force` 可忽略某些警告继续处理剩余部分而不会中断整个过程;同时指定了字符集防止潜在的文字乱码问题出现。 #### 处理大规模数据的情况 针对非常庞大的表结构或大量事务的情形下建议采用增量方式逐步加载而不是一次性导入全部内容以免造成性能瓶颈甚至崩溃风险。此时可考虑分批次设定不同的时间段间隔分别解析对应区间的日志条目再依次提交至待修复的目标库中去。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值