mysql的一些面经

1 MySQL常见的存储引擎InnoDB、MyISAM的适用场景分别是?

MySQL 提供了多种存储引擎,但其中最常见的是 InnoDB 和 MyISAM。这两种存储引擎各有其优势和特点,适用于不同的应用场景。

InnoDB:

  1. 事务支持:InnoDB 支持 ACID 事务,这使得它适用于需要事务支持的应用,例如金融、订单处理等。
  2. 行级锁定:InnoDB 提供行级锁定,而不是 MyISAM 的表级锁定。这可以提供更好的并发性能。
  3. 外键约束:InnoDB 支持外键和级联操作,这在某些需要数据完整性的应用中是必需的。
  4. MVCC(多版本并发控制):支持读已提交和可重复读的隔离级别,使读操作不会被锁定阻塞,适用于有大量读写操作的应用。
  5. 崩溃恢复:由于其日志性质,InnoDB 在系统崩溃时可以恢复到一个一致的状态。

适用场景:需要事务支持、数据一致性和外键支持的复杂应用,例如银行系统、电商平台等。

MyISAM:

  1. 表级锁定:MyISAM 使用表级锁定,可能会导致在高并发写入时出现瓶颈。
  2. 全文索引:MyISAM 支持全文搜索索引,而 InnoDB 在更早的版本中不支持(直到 MySQL 5.6 之后,InnoDB 才开始支持全文搜索)。
  3. 压缩表:MyISAM 支持数据表压缩。
  4. 更快的读操作:由于 MyISAM 的简单存储格式,它的读取速度通常比 InnoDB 快。
  5. 没有事务支持:MyISAM 不支持事务。

适用场景:主要用于读取密集、并发写入较少、不需要事务和外键支持的应用,例如简单的内容管理系统、博客平台等。

总之,选择哪种存储引擎取决于应用的具体需求。但由于 InnoDB 提供的事务支持和数据完整性,它通常被视为现代应用的首选。而 MyISAM 由于其某些特性(如全文搜索)在某些特定场景中仍然很有价值。

2 char和varchar的区别:

  • 存储方式:CHAR 是固定长度的,无论你存储的数据有多长,它都会为其分配相同的空间;而 VARCHAR 是变长的,它只存储实际数据并添加一个额外的字节来记录数据的长度。
  • 性能:由于 CHAR 是固定长度的,它的检索速度通常比 VARCHAR 快。但 CHAR 可能浪费更多的空间。
  • 使用场景:对于长度经常变化的字段,使用 VARCHAR 更合适;对于已知固定长度的字段(如国家代码、邮政编码),使用 CHAR 可能更合适。

3

猜你喜欢

转载自blog.csdn.net/yxg520s/article/details/132159050
今日推荐