面试官问到哪些问题,你可以用这节课的内容来回答呢?
- 你是如何提升系统可用性或者性能的?
- MVCC 相关的问题,你可以说你调整过 redo log 的刷盘时机,然后进一步引申到你对数据库调优的其他方案。
- 读写分离或者分库分表相关问题,也和这节课的内容强相关。
最佳的面试策略,是把提高数据库可用性、性能作为你提高整个系统的可用性、性能的一环。
在简历上:
我擅长数据库,包括查询优化、MySQL 和 InnoDB 引擎优化,熟练掌握 MySQL 高可用和高性能方案。
自我介绍
我在数据库方面有比较多的积累,比如说我长期负责公司的查询优化,提高 MySQL 的可用性和性能。也在公司推动过读写分离和分库分表,实践经验丰富。
具体项目
这个项目是我们公司的核心业务,我主要负责性能优化和提高系统可用性。在数据库上,我通过查询优化、参数优化和读写分离,提高了 20% 的查询性能。同时参与了一个核心业务数据库的分库分表,主要负责的是数据迁移和主键生成部分。
innodb_flush_log_at_trx_commit 这个参数非常重要
再介绍一个能够提升数据库性能,并且适合在面试中使用的参数innodb_buffer_pool_size
简单说就是 innodb 缓冲池的大小,用于缓存表和索引,也包括插入数据缓冲,增加这个值可以减少磁盘 IO。
在实践中应该尽可能调大这个参数。如果数据库所在的机器内存比较大,那么可以调整到整个内存的 70% 或者 75%。但是也要小心这个参数过大,物理内存不足,容易触发操作系统 swap。