MySQL 相关内容解释

26 阅读2分钟
  1. MySQL存储数据的基本单元是名为page的数据结构,缺省状态每个page允许16kb的空间

    • MySQL使用page作为存储数据的基本单元,每个page默认大小为16KB。
  2. page就是一个增强的HashMap

    • 每个page内部使用类似HashMap的结构来存储数据,其中key是主键,value是对应的数据行。此外,page还包含指向前一个和后一个page的指针,以及记录当前page从哪个主键开始。
  3. B+树的形成

    • 随着数据量的增加,page数量也会增加。为了快速查找数据,MySQL使用B+树结构来管理这些page。B+树的每一层都是一个page,用于管理下一层的page,从而实现快速查找。
  4. Page的前后指针

    • Page的前后指针用于快速遍历数据,特别是在查询范围数据时,可以直接通过指针跳转,而无需遍历整个B+树。
  5. 自增主键的优势

    • 自增主键使得B+树的构建更加简单,因为数据可以按顺序插入,无需进行页内数据的重新排列。
  6. 联合索引

    • 联合索引是基于多个字段创建的索引。查询时,如果跳过了联合索引的第一个字段,索引将失效,因为无法通过第一个字段(key)快速定位数据。
  7. VARCHAR字段的索引失效

    • 对于VARCHAR字段,如果使用LIKE操作符进行模糊查询(如%bc%),索引可能会失效,因为这种查询方式无法利用索引的有序性。
  8. 回表操作

    • 当通过非主键索引查询数据时,需要先找到主键,然后通过主键索引找到实际的数据行,这个过程称为回表。
  9. 覆盖索引

    • 如果查询的所有字段都在索引中,可以直接从索引中获取数据,而无需回表,这种索引称为覆盖索引,查询速度更快。
  10. 聚簇索引和非聚簇索引

    • 聚簇索引是将数据行存储在索引的叶子节点中,而非聚簇索引则将索引和数据分开存储。
  11. MySQL不适合全文索引而ES可以

    • MySQL的B+树索引不适合全文检索,因为全文检索需要从左到右的顺序匹配。而Elasticsearch通过倒排索引实现全文检索,更适合这种场景。