Skip to content

美团一面,有点难度

前几天分享过一篇训练营的朋友在阿里的一面面经,挺简单的她也是很轻松的过了,感兴趣的可以看一下我之前发的文章。

今天要分享的还是她的面经,美团的一面,感觉比阿里的难一些,各位观众老爷你怎么看?

  1. 自我介绍

2. 如何治理大表?

治理大表通常涉及到以下几个方面:

  • 分库分表:根据业务逻辑或数据分布将数据分散到多个数据库或表中。
  • 分区:对于单个大表,可以采用分区技术(如范围、列表、哈希分区)来提高查询性能。
  • 归档:将不再频繁访问的历史数据迁移到低成本存储介质。
  • 优化查询:确保所有查询语句都是高效的,并且只选择需要的列。
  • 索引管理:为经常用于查询条件的字段创建索引,但避免过度索引以防止写入性能下降。

3. 对于千万级的mysql表,如何能够使他读取的更快?

要加快大型MySQL表的读取速度,可以采取以下措施:

  • 索引优化:为常用的查询条件建立有效的索引,包括联合索引。
  • 覆盖索引:当查询的所有字段都在索引中时,直接从索引树获取结果,而不必回表查找。
  • 分区表:按照时间戳或其他标准对表进行分区,减少扫描的数据量。
  • 缓存机制:利用Redis等内存型数据库作为缓存层,减轻数据库压力。
  • 读写分离:设置主从架构,读操作分发到从节点执行。
  • 调整配置参数:比如增大innodb_buffer_pool_size,提高缓冲区命中率。

4. 索引应该怎么建?

索引的设计应遵循以下原则:

  • 选择性高的字段优先:选择性高意味着该字段能区分更多的记录,这样的索引更加有效。
  • 考虑查询模式:分析应用中最常见的查询模式,确保这些查询能够充分利用索引。
  • 联合索引:如果多个字段总是同时出现在WHERE子句中,可以考虑创建联合索引。
  • 避免过多索引:每增加一个索引都会影响插入、更新和删除操作的速度。
  • 定期审查:随着数据的增长和查询模式的变化,原有的索引可能不再适用,需定期评估并调整。

5. 考察联合索引的最左匹配原则?

联合索引是由多个字段组成的复合索引,它的工作原理是基于最左前缀原则。这意味着查询条件必须包含索引的第一个字段才能有效地使用这个索引。例如,如果有联合索引(a, b),那么查询条件中至