跳转到内容

mysql典型面试题

lyonmu

事务隔离级别有哪些,mysql默认的事务隔离级别是什么

事务隔离级别

mysql默认事务隔离级别

事务有哪些特性

mysql有哪些表引擎,为什么会使用InnoDB

存储引擎

InnoDB核心优势

InnoDB 之所以成为默认引擎,是因为它在数据安全和并发性能上具备四大核心优势:

在生产上是如何优化mysql查询性能

  1. 数据类型最小化 能用字节小的数据类型就用小的。比如状态字段用 TINYINT 而不是 VARCHAR,IP地址用 INT UNSIGNED 存储,时间用 DATETIME 而不是字符串。这样不仅能节省存储空间,还能提升索引效率和查询速度
  2. 字段尽量 NOT NULL 能设置 NOT NULL 就尽量设置。因为 NULL 值会使索引、索引统计和值的比较都变得更复杂,增加索引的复杂度,甚至可能导致索引失效。通常建议用默认值(如 0 或空字符串)来代替 NULL
  3. 避免宽表 不要把几十个字段都塞进一张表里。对于不常用或体积很大的字段(比如用户简介 TEXT、头像URL等),应该通过垂直分表拆分到单独的副表中。这样主表只保留高频查询的核心字段,能大幅提升查询效率
  4. 高频查询字段增加索引WHEREORDER BYGROUP BYJOIN 中高频使用的字段创建合适的索引。特别是复合索引,要遵循最左前缀匹配原则。但也要注意“少而精”,避免创建过多索引,因为每次增删改操作都需要同步更新索引,会降低写入性能
  5. Redis 热点数据作缓存 对于读多写少的热点数据(如商品详情、用户信息),使用 Redis 作为缓存层。这能拦截掉绝大部分的数据库查询请求,极大地减轻 MySQL 的压力,提升系统的整体响应速度

数据表你们选取的是什么字符集,为什么这样选择

我们数据库统一使用的是 utf8mb4 字符集。

因为 MySQL 里的 utf8 其实是 utf8mb3 的别名,最多只支持 3 个字节。而真正的 UTF-8 标准是支持 4 个字节的。为了支持完整的 Unicode 字符,我们必须用 utf8mb4

使用 utf8mb4 最大的好处是完美支持 Emoji 表情和一些生僻汉字。如果用普通的 utf8,用户输入表情时数据库会直接报错,而 utf8mb4 彻底避免了这个问题,且对常用中英文的存储开销没有影响。

Siguiente
redis典型面试题