10bet网址
MySQL 8.0参考手册gydF4y2Ba
相关的文档10bet官方网站gydF4y2Ba 本手册下载gydF4y2Ba
PDF (Ltr)gydF4y2Ba- 41.6 mbgydF4y2Ba
PDF (A4)gydF4y2Ba- 41.7 mbgydF4y2Ba
手册页(TGZ)gydF4y2Ba- 262.2 kbgydF4y2Ba
手册页(邮政编码)gydF4y2Ba- 372.3 kbgydF4y2Ba
信息(Gzip)gydF4y2Ba- 4.0 mbgydF4y2Ba
信息(邮政编码)gydF4y2Ba- 4.0 mbgydF4y2Ba
本手册摘录gydF4y2Ba

MySQL 8.0参考手册gydF4y2Ba/gydF4y2Ba…gydF4y2Ba/gydF4y2Ba 评估分析表的复杂性为InnoDB表gydF4y2Ba

15.8.10.3评估分析表的复杂性为InnoDB表gydF4y2Ba

分析表gydF4y2Ba复杂性为gydF4y2BaInnoDBgydF4y2Ba表依赖于:gydF4y2Ba

  • 的页面数量取样,所定义的gydF4y2Bainnodb_stats_persistent_sample_pagesgydF4y2Ba。gydF4y2Ba

  • 索引表中的列的数量gydF4y2Ba

  • 分区的数量。如果一个表没有分区,分区的数量被认为是1。gydF4y2Ba

使用这些参数估计的近似公式gydF4y2Ba分析表gydF4y2Ba复杂性是:gydF4y2Ba

的价值gydF4y2Bainnodb_stats_persistent_sample_pagesgydF4y2Ba*一个表的索引列数量*分区的数量gydF4y2Ba

通常情况下,得到的值越大,越大的执行时间gydF4y2Ba分析表gydF4y2Ba。gydF4y2Ba

请注意gydF4y2Ba

innodb_stats_persistent_sample_pagesgydF4y2Ba定义的页面数量在全球层面上采样。设置采样的页面数量为一个单独的表,使用gydF4y2BaSTATS_SAMPLE_PAGESgydF4y2Ba选项gydF4y2Ba创建表gydF4y2Ba或gydF4y2BaALTER TABLEgydF4y2Ba。有关更多信息,请参见gydF4y2Ba部分15.8.10.1”,持续优化配置统计参数”gydF4y2Ba。gydF4y2Ba

如果gydF4y2Bainnodb_stats_persistent =了gydF4y2Ba,页面的数量被定义为采样gydF4y2Bainnodb_stats_transient_sample_pagesgydF4y2Ba。看到gydF4y2Ba部分15.8.10.2”,非持久性配置优化统计参数”gydF4y2Ba额外的信息。gydF4y2Ba

更深入的评估方法gydF4y2Ba分析表gydF4y2Ba复杂性,考虑下面的例子。gydF4y2Ba

在gydF4y2Ba大O符号gydF4y2Ba,gydF4y2Ba分析表gydF4y2Ba复杂性被描述为:gydF4y2Ba

O (n_sample * (n_cols_in_uniq_i + n_cols_in_non_uniq_i + n_cols_in_pk * (1 + n_non_uniq_i)) * n_part)gydF4y2Ba

地点:gydF4y2Ba

  • n_samplegydF4y2Ba是采样的页数(定义为gydF4y2Bainnodb_stats_persistent_sample_pagesgydF4y2Ba)gydF4y2Ba

  • n_cols_in_uniq_igydF4y2Ba在所有独特的索引所有列的总数(不包括主键列)gydF4y2Ba

  • n_cols_in_non_uniq_igydF4y2Ba所有列的总数在所有nonunique索引gydF4y2Ba

  • n_cols_in_pkgydF4y2Ba是主键的列数(如果没有定义一个主键,gydF4y2BaInnoDBgydF4y2Ba在内部创建一个列主键)gydF4y2Ba

  • n_non_uniq_igydF4y2Banonunique索引的表的数量吗gydF4y2Ba

  • n_partgydF4y2Ba分区的数量。如果没有定义,分区表被认为是一个单独的分区。gydF4y2Ba

现在,考虑下面的表(表gydF4y2BatgydF4y2Ba(2),它有一个主键列),唯一的索引(2列),和两个nonunique索引(每两列):gydF4y2Ba

创建表t (INT, INT, INT, INT, INT, INT, INT, INT,主键(a、b),唯一键i1uniq (c, d),关键i2nonuniq (e, f),关键i3nonuniq (g, h));gydF4y2Ba

列和索引数据所需的算法上面描述,查询gydF4y2Bamysql.innodb_index_statsgydF4y2Ba持久的索引统计数据表的表gydF4y2BatgydF4y2Ba。的gydF4y2Ban_diff_pfx %gydF4y2Ba统计数据显示的列数为每个索引。例如,列gydF4y2Ba一个gydF4y2Ba和gydF4y2BabgydF4y2Ba计算的主键索引。对于nonunique索引,主键列(a, b)计算除了用户定义的列。gydF4y2Ba

请注意gydF4y2Ba

提供更多的信息gydF4y2BaInnoDBgydF4y2Ba持久数据表,请参阅gydF4y2Ba部分15.8.10.1”,持续优化配置统计参数”gydF4y2Ba

mysql >选择index_name、stat_name stat_description从mysql。innodb_index_stats database_name =“测试”,table_name = ' t '和stat_name像“n_diff_pfx %”;+ - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | index_name | stat_name | stat_description | + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -主要+ | | n_diff_pfx01 |的| | |主要n_diff_pfx02 | a, b | | i1uniq | n_diff_pfx01 c | | | i1uniq | n_diff_pfx02 | c, d | | i2nonuniq | n_diff_pfx01 e | | | i2nonuniq | n_diff_pfx02 | e, f | | i2nonuniq | n_diff_pfx03 | e, f,一个| | i2nonuniq | n_diff_pfx04 | e, f, a, b | | i3nonuniq | n_diff_pfx01 g | | | i3nonuniq | n_diff_pfx02 | g h | | i3nonuniq | n_diff_pfx03 | g h,一个| | i3nonuniq | n_diff_pfx04 | g h, a、b - - - - - - - - - - - - | + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +gydF4y2Ba

基于上面所示的索引统计数据表定义,可以确定以下值:gydF4y2Ba

  • n_cols_in_uniq_igydF4y2Ba,所有独特的索引列的总数不包括主键列,是2 (gydF4y2BacgydF4y2Ba和gydF4y2BadgydF4y2Ba)gydF4y2Ba

  • n_cols_in_non_uniq_igydF4y2Ba,所有列的总数nonunique索引,是4 (gydF4y2BaegydF4y2Ba,gydF4y2BafgydF4y2Ba,gydF4y2BaggydF4y2Ba和gydF4y2BahgydF4y2Ba)gydF4y2Ba

  • n_cols_in_pkgydF4y2Ba主键的列数,是2 (gydF4y2Ba一个gydF4y2Ba和gydF4y2BabgydF4y2Ba)gydF4y2Ba

  • n_non_uniq_igydF4y2Banonunique索引的表的数量,是2 (gydF4y2Bai2nonuniqgydF4y2Ba和gydF4y2Bai3nonuniqgydF4y2Ba))gydF4y2Ba

  • n_partgydF4y2Ba分区的数量,是1。gydF4y2Ba

你现在可以计算gydF4y2Bainnodb_stats_persistent_sample_pagesgydF4y2Ba*(2 + 4 + 2 *(1 + 2)* 1,确定叶片扫描的页面的数量。与gydF4y2Bainnodb_stats_persistent_sample_pagesgydF4y2Ba设置为默认值gydF4y2Ba20.gydF4y2Ba,默认页面大小为16gydF4y2Ba简约gydF4y2Ba(gydF4y2Bainnodb_page_sizegydF4y2Ba= 16384),然后您可以估计,20 * 12 * 16384gydF4y2Ba字节gydF4y2Ba读表gydF4y2BatgydF4y2Ba(约4gydF4y2BaMiBgydF4y2Ba。gydF4y2Ba

请注意gydF4y2Ba

所有4gydF4y2BaMiBgydF4y2Ba可能不是从磁盘读取,像一些叶子页面缓存可能已经在缓冲池中。gydF4y2Ba