数据库

 首页 > 数据库 > mariadb > 关于MariaDB 5.5.27数据库中的hash join

关于MariaDB 5.5.27数据库中的hash join

分享到:
【字体:
导读:
         摘要:D:\mariadb-5.5.27\sql\Debugmoremy.ini[mysqld]#datadirD:\mariadb-5.5.27\sql\datainnodb_file_per_tableoptimizer_switchindex_condition_pushdownonoptimizer_switchmr...

关于MariaDB 5.5.27数据库中的hash join
D:mariadb-5.5.27sqlDebug>more my.ini
[mysqld]
#datadir=D:mariadb-5.5.27sqldata
innodb_file_per_table
optimizer_switch='index_condition_pushdown=on'
optimizer_switch='mrr=on'
optimizer_switch='mrr_sort_keys=on'
optimizer_switch='mrr_cost_based=off'
mrr_buffer_size=32M
optimizer_switch='join_cache_incremental=on'
optimizer_switch='join_cache_hashed=on'
optimizer_switch='join_cache_bka=on'
join_cache_level=4
#join_buffer_size=32M
#join_buffer_space_limit=32M

上面参数只试了join_cache_level=4是一定要有的,最初配置没加这个,就没试出来hash join。

MariaDB [tm]> show create table t1G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `name_1` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
MariaDB [tm]> show create table t3G
*************************** 1. row ***************************
       Table: t3
Create Table: CREATE TABLE `t3` (
  `t3id` int(11) NOT NULL AUTO_INCREMENT,
  `t3name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`t3id`)
) ENGINE=InnoDB AUTO_INCREMENT=391152 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
MariaDB [tm]> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        6 |
+----------+
1 row in set (0.00 sec)
MariaDB [tm]> select count(*) from t3;
+----------+
| count(*) |
+----------+
|   262144 |
+----------+
1 row in set (0.94 sec)

MariaDB [tm]> explain select t3.t3name from t1,t3 where t1.name=t3.t3name;
+------+-------------+-------+----------+---------------+-----------+---------+------------+--------+--------------------------------------------------+
| id   | select_type | table | type     | possible_keys | key       | key_len | ref        | rows   | Extra                                            |
+------+-------------+-------+----------+---------------+-----------+---------+------------+--------+--------------------------------------------------+
|    1 | SIMPLE      | t1    | ALL      | NULL          | NULL      | NULL    | NULL       |      6 | Using where                                      |
|    1 | SIMPLE      | t3    | hash_ALL | NULL          | #hash#$hj | 104     | tm.t1.name | 262178 | Using where; Using join buffer (flat, BNLH join) |
+------+-------------+-------+----------+---------------+-----------+---------+------------+--------+--------------------------------------------------+
2 rows in set (0.00 sec)

BNLH就是Block Nested Loop Hash
关于MariaDB 5.5.27数据库中的hash join
分享到:
MariaDB 10.0数据库和 MySQL 5.6的区别
MariaDB 10.0数据库和 MySQL 5.6的区别 去年的5月,我第一次在博客上介绍了关于MariaDB 10.0。 我们当时收到很多的反馈,在进行众人意见总结后,我们再次的更加深入的解释过MariaDB 10.0. 在新的一年的伊始,随着MariaDB 10.0 的 Alpha版本的推出,现在应该是时候再多说一点关于MariaDB 10.0, 特别是它和MySQL...
关于informix数据库的多重驻留
关于informix数据库的多重驻留一、多重驻留 多重驻留(Multiple Residency)是指在同一台主机上运行多个OnLine实例,每个OnLine实例都拥有和管理自己的进程、共享内存和磁盘空间。多重驻留并不是指将OnLine软件安装到多个不同的目录。OnLine5.0、Online7.x与IDS都支持多重驻留,而且这几个不同版本的数据库存服务器可以驻...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……