[Mysql数据库] 知识点总结6
1. 请对 InnoDB 的锁机制做一个完整的说明。
答:InnoDB 锁机制是服务器级别数据锁,在存储引擎中提供行级锁,使用互斥同步底层代码操作, 确保一次只有一个线程可以访问每个资源。
2. 使用什么方法可以快速查询 InnoDB 锁冲突的相关信息?
答:使用 SHOW PROCESSLIST 命令的输出检查,其中 State 列中的值会显示进程锁定信息。 更简单的方法是使用 sys.innodb_lock_waits 视图来查询被阻塞(等待)和阻塞语句。
3. MySQL 8.0 版本的 InnoDB 数据库意外宕机后,有几种恢复的方法?
答:MySQL 8.0 的 InnoDB 数据库意外宕机的恢复方法有:
- InnoDB 在失败后可以自动执行实例恢复
- 通过使用 mysqldump 转储的表、删除后并从转储文件重新创建它来恢复该表
- 可以使用 --innodb_force_recovery 选项重新启动服务器,或从备份中恢复表
4. 请说明 EXPLAIN 语句的作用。
答:EXPLAIN 语句能够生成 SQL 语句的执行计划,显示出优化器如何执行该 SQL 语句的最优路径。 可以用来检查 SELECT, INSERT, REPLACE, UPDATE 和 DELETE 语句。
5. 为什么使用索引会比全表扫描可以提供更好的查询性能?
答:索引是一个方案对象,由数据库自动使用和维护。使用索引可以直接而快速的访问表中的行,其 作用是通过使用索引路径快速找到数据从而减少磁盘的 I/O,提升访问性能。
6. MySQL 数据库是如何自动维护索引统计信息的?
答:MySQL 是自动维护 InnoDB 索引统计信息的,每次在 10% 的表行更改后自动更新,默认采样 20 个数据页。也可以使用 ANALYZE TABLE 手动更新。
7. mysqlcheck 客户机程序都有哪些功能?
答:适用于 InnoDB、MyISAM 和 ARCHIVE 表,功能如下:
mysqlcheck --analyze: 执行 ANALYZE TABLE
mysqlcheck --check: 执行 CHECK TABLE (default)
mysqlcheck --optimize: 执行 OPTIMIZE TABLE
8. 在性能分析期间使用 Invisible Indexes 有什么好处?
答:通过将索引标记为不可见,可以有效地将其从优化器中“隐藏”起来,同时索引本身保持完整并且可以随时恢复。此功能使测试索引的删除和执行更改的分阶段回退变得更加容易。
9. 什么是直方图(histograms),它在使用上和索引有什么不同?
答:直方图用来显示数据在列上的分布情况。如果在非索引列上创建直方图,那么就可以向优化器提供列 内数据分布的近似值,从而有助于优化器就如何访问这些列包含的数据时能给出更高效的决定。
10. 请详细说明热备、温备和冷备的特点和不同。
答:热备(Hot backups),在数据库正常读取和修改数据时进行,几乎不会中断对数据的操作。
冷备(Cold backups),在服务器处于不可访问模式或完全关闭时进行,无法操作数据。
温备(Warm backups),备份时允许应用程序读取数据,但不允许修改数据。
11. 在 MySQL 中支持的备份技术有哪些,分别予以说明。
答:支持的备份技术有逻辑备份,物理备份,基于快照的备份,基于复制的备份,以及增量备份。
12. 执行逻辑备份要具备哪些条件,其优缺点在哪。
答:逻辑备份是温备,创建逻辑备份时,MySQL 服务器必须处于运行状态,其他应用程序在逻辑备份 期间不能修改但可以执行读取操作。逻辑备份会把表结构和数据转换为 SQL 语句保存。
逻辑备份的优点是它生成的 SQL 文本具有很好的跨平台移植性。
缺点是运行速度太慢,只适合数据量小的表,并且在备份期间其它用户不能修改表。
13. 物理备份一般是用来满足什么样的数据库维护需求?
答:物理备份是数据库文件按比特位的精确复制副本,可以高速地复制大数据集的数据库。 适合实时(或接近实时)备份,或者在发生硬件故障时提能供快速的数据恢复。
14. 基于快照的备份能否用来进行数据库损坏时的恢复,请说明理由。
答:这种备份不能用来进行数据库损坏时的恢复,因为使用快照恢复的数据库只包含了抓取快照时的数据 库状态,从快照抓取时间点到故障点的数据库修改无法恢复。
15. 请对基于复制的备份的特点加以说明。
答:基于复制的备份使用复制技术实现,主服务器 (master,生产系统) 的修改会同步到从属服务 器(slave,副本数据库)上,在主服务器故障时,从属服务器有完整的数据库副本。
基于复制的备份消除了备份过程对生产系统的影响,但必须配置有另一台服务器和存储器来存放 数据库的副本,增加了生产成本。
16. 在使用 mysqlbackup 进行备份时,对于 InnoDB 存储引擎都会备份哪些文件?
答:mysqlbackup 备份 InnoDB 表时会包含以下文件:
- ibdata*文件:系统表空间文件,其中包含系统表空间以及某些用户表的数据。
- .ibd 文件:单文件表表空间的数据文件和常规表空间的数据文件。
- ib_logfile*文件:包含了在备份运行时所产生的更改信息,以及重做日志的信息。