排序
排序算法
- 快速排序:MySQL 5.7.8 之前,默认的排序算法是快速排序。
- 归并排序:MySQL 5.7.8 之后,默认的排序算法是归并排序。
排序原理
MySQL 在处理排序时有两种主要方式:
通过explain可以进行分析
- Using Index:如果排序字段有索引,MySQL 会直接利用索引完成排序。
- Using Filesort:如果没有合适的索引,MySQL 会将数据加载到内存或磁盘中进行排序。
2025年4月23日大约 2 分钟
MySQL 在处理排序时有两种主要方式:
通过explain可以进行分析
https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html
缓冲池是主内存中的一个区域, InnoDB 在访问表和索引数据时将其缓存起来。缓冲池允许从内存直接访问常用数据,从而加快处理速度。在专用服务器上,通常会将多达 80% 的物理内存分配给缓冲池。
页作为最小读取单位,默认16kb。
InnoDB存储引擎通过维护Buffer_Pool来缓存数据,从而提高读取效率。Buffer_Pool中缓存的数据页类型包括数据页、索引页等,其通过改造版LRU进行淘汰策略。
HyperLogLog 是一种用于统计基数(cardinality)的算法,它使用一个固定大小的数组来表示一个集合,并使用一个哈希函数来确定元素的位置。HyperLogLog 的核心思想是通过估计数组中 0 的数量来估计集合的大小。
HyperLogLog 的优点是它使用固定大小的数组,因此它的空间复杂度是 O(log n),其中 n 是集合的大小。这使得 HyperLogLog 非常适合处理大规模数据集。