面试题答案
一键面试1. 页大小调整思路及影响
- 调整思路:适当增大页大小。在MySQL中,InnoDB存储引擎默认页大小为16KB。对于千万级数据量的表,更大的页大小意味着每个页可以容纳更多的索引记录,从而减少B+树的高度,降低磁盘I/O次数。例如,可以尝试将页大小调整为32KB或64KB(需谨慎评估,因为不同版本MySQL对页大小调整有一定限制)。
- 可能带来的影响:
- 性能提升:减少树的高度,加快查询速度,尤其是范围查询和全表扫描时,因为每次I/O读取的数据量更多,减少了I/O操作次数。
- 空间浪费:如果页中记录稀疏,会导致空间浪费。同时,大页在更新数据时,可能导致更多的页分裂,因为页满时需要将数据移到新页,增加了维护成本。
2. 填充因子调整思路及影响
- 调整思路:降低填充因子。填充因子决定了B+树节点在插入数据时填满的程度,默认一般接近100%。对于大数据量且更新频繁的表,可以适当降低填充因子,如设置为80% - 90%。这样在插入新数据时,节点有更多空间容纳新记录,减少页分裂的概率。
- 可能带来的影响:
- 性能提升:减少页分裂带来的I/O开销,特别是在频繁插入和更新操作的场景下,提高了写入性能。同时,对于范围查询,由于页分裂减少,数据存储更紧凑,也可能提升查询性能。
- 空间占用:因为节点没有完全填满,会占用更多的磁盘空间,可能导致整体存储成本上升。