MySQL知识点总结(十一)
如何查看 InnoDB 表所占用的实际存储空间大小?
可以查询 INFORMATION_SCHEMA.FILES 视图,其中包含有 InnoDB 表空间的磁盘大小信息。
也可以在文件系统直接查看 .ibd 文件的大小,但仅适用于单表文件包空间。
谈谈对 MySQL 数据库进行纵向扩展和横向扩展的适用场合。
纵向扩展是给主机添加更多的 CPU、存储或主内存资源,提高单个节点的处理能力,效果有限。
横向扩展是向环境中添加更多的服务器以启用集群的并行处理能力,扩容效果明显,比如:分片
数据库、分析或备份复制、InnoDB 集群、MySQL 集群中的 NDB 存储引擎等。
说出在判断一个数据库性能问题时的一般性思路或步骤。
答:确定问题时的基本思路或步骤如下:
- 应用程序、数据库或服务器配置最近是否发生了变化?
- 问题自第一次出现后是否自行解决?
~ 由于批量操作或网络流量激增,应用程序活动是否突然增长?
~ 系统资源是否被数据库外部的操作占用?
- 问题是否以可预测的时间间隔发生?
- 将应用程序、MySQL 和 OS 设置以及其他度量与基线进行比较
- 在功能级别定位问题
- 创建清晰的问题陈述
请对 InnoDB 的锁机制做一个完整的说明。
InnoDB 锁机制是服务器级别数据锁,在存储引擎中提供行级锁,使用互斥同步底层代码操作,
确保一次只有一个线程可以访问每个资源。
使用什么方法可以快速查询 InnoDB 锁冲突的相关信息?
使用 SHOW PROCESSLIST 命令的输出检查,其中 State 列中的值会显示进程锁定信息。
更简单的方法是使用 sys.innodb_lock_waits 视图来查询被阻塞(等待)和阻塞语句。
MySQL 8.0 版本的 InnoDB 数据库意外宕机后,有几种恢复的方法?
MySQL 8.0 的 InnoDB 数据库意外宕机的恢复方法有:
- InnoDB 在失败后可以自动执行实例恢复
- 通过使用 mysqldump 转储的表、删除后并从转储文件重新创建它来恢复该表
- 可以使用 --innodb_force_recovery 选项重新启动服务器,或从备份中恢复表