最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql 8.0.18 hash join測試(推薦)

 更新時間:2019年10月25日 09:19:07   作者:zhjh256  
這篇文章給大家介紹Mysql 8.0.18 hash join測試的相關(guān)知識,本文通過實例代碼講解,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧

Hash Join

Hash Join 不需要任何索引來執(zhí)行,并且在大多數(shù)情況下比當(dāng)前的塊嵌套循環(huán)算法更有效。

下面通過實例代碼給大家介紹Mysql 8.0.18 hash join測試,具體內(nèi)容如下所示:

CREATE TABLE COLUMNS_hj as select * from information_schema.`COLUMNS`;
INSERT INTO COLUMNS SELECT * FROM COLUMNS; -- 最后一次插入25萬行

CREATE TABLE COLUMNS_hj2 as select * from information_schema.`COLUMNS`;
explain format=tree
SELECT 
 COUNT(c1. PRIVILEGES),
 SUM(c1.ordinal_position)
FROM
 COLUMNS_hj c1,
 COLUMNS_hj2 c2
WHERE
 c1.table_name = c2.table_name
AND c1.column_name = c2.column_name
GROUP BY
 c1.table_name,
 c1.column_name
ORDER BY
 c1.table_name,
 c1.column_name;

必須使用format=tree(8.0.16的新特性)才能查看hash join的執(zhí)行計劃:

-> Sort: <temporary>.TABLE_NAME, <temporary>.COLUMN_NAME
 -> Table scan on <temporary>
  -> Aggregate using temporary table
   -> Inner hash join (c1.`COLUMN_NAME` = c2.`COLUMN_NAME`), (c1.`TABLE_NAME` = c2.`TABLE_NAME`) (cost=134217298.97 rows=13421218)
    -> Table scan on c1 (cost=1.60 rows=414619)
    -> Hash
     -> Table scan on c2 (cost=347.95 rows=3237)
set join_buffer_size=1048576000;

SELECT 
 COUNT(c1. PRIVILEGES),
 SUM(c1.ordinal_position)
FROM
 COLUMNS_hj c1,
 COLUMNS_hj2 c2
WHERE
 c1.table_name = c2.table_name
AND c1.column_name = c2.column_name
GROUP BY
 c1.table_name,
 c1.column_name
ORDER BY
 c1.table_name,
 c1.column_name;

1.5秒左右。


再來看BNL,先創(chuàng)建索引(分別優(yōu)化了,再對比效果才公平)。

alter table columns_hj drop index idx_columns_hj;
alter table columns_hj2 drop index idx_columns_hj2;
create index idx_columns_hj on columns_hj(table_name,column_name);
create index idx_columns_hj2 on columns_hj2(table_name,column_name);

-> Sort: <temporary>.TABLE_NAME, <temporary>.COLUMN_NAME
 -> Table scan on <temporary>
  -> Aggregate using temporary table
   -> Nested loop inner join (cost=454325.17 rows=412707)
    -> Filter: ((c2.`TABLE_NAME` is not null) and (c2.`COLUMN_NAME` is not null)) (cost=347.95 rows=3237)
     -> Table scan on c2 (cost=347.95 rows=3237)
    -> Index lookup on c1 using idx_COLUMNS_hj (TABLE_NAME=c2.`TABLE_NAME`, COLUMN_NAME=c2.`COLUMN_NAME`) (cost=127.50 rows=127)

大約4.5秒??梢奾ash join效果還是杠杠的。

不得不吐槽下mysql的優(yōu)化器提示,貌似HASH_JOIN/NO_HASH_JOIN都不生效。

除了hash_join外,mysql 8.0.3引入的SET_VAR優(yōu)化器提示還是很好用的,可用來設(shè)置語句級參數(shù)(oracle支持,mariadb記得也支持了的),如下:

mysql> select /*+ set_var(optimizer_switch='index_merge=off') set_var(join_buffer_size=4M) */ c_id from customer limit 1;

SET_VAR支持的變量列表:

auto_increment_increment
auto_increment_offset
big_tables
bulk_insert_buffer_size
default_tmp_storage_engine
div_precision_increment
end_markers_in_json
eq_range_index_dive_limit
foreign_key_checks
group_concat_max_len
insert_id
internal_tmp_mem_storage_engine
join_buffer_size
lock_wait_timeout
max_error_count
max_execution_time
max_heap_table_size
max_join_size
max_length_for_sort_data
max_points_in_geometry
max_seeks_for_key
max_sort_length
optimizer_prune_level
optimizer_search_depth variables
optimizer_switch
range_alloc_block_size
range_optimizer_max_mem_size
read_buffer_size
read_rnd_buffer_size
sort_buffer_size
sql_auto_is_null
sql_big_selects
sql_buffer_result
sql_mode
sql_safe_updates
sql_select_limit
timestamp
tmp_table_size
updatable_views_with_limit
unique_checks
windowing_use_high_precision

總結(jié)

以上所述是小編給大家介紹的Mysql 8.0.18 hash join測試,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • MySQL8.0內(nèi)存相關(guān)參數(shù)總結(jié)

    MySQL8.0內(nèi)存相關(guān)參數(shù)總結(jié)

    這篇文章主要介紹了MySQL8.0內(nèi)存相關(guān)參數(shù)總結(jié),幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • mysql中mydumper 和 mysqldump 對比使用

    mysql中mydumper 和 mysqldump 對比使用

    MySQL數(shù)據(jù)庫備份工具有其自帶的mysqldump,屬于mysql官方的一款備份工具。但是第三方備份工具mydumper憑借優(yōu)越的特點為更多人所使用。下面就通過測試驗證它們之間的備份效率。
    2017-05-05
  • mysql-8.0.15-winx64安裝與修改密碼方式

    mysql-8.0.15-winx64安裝與修改密碼方式

    本文提供了詳細(xì)的MySQL安裝步驟,包括下載、安裝、配置環(huán)境變量、啟動服務(wù)和初始化數(shù)據(jù)庫,首先,從MySQL官網(wǎng)下載壓縮包并解壓,其次,將bin目錄添加到系統(tǒng)PATH中,接著,創(chuàng)建my.ini文件進行配置,并正確放置于指定目錄,通過CMD以管理員身份執(zhí)行安裝和初始化命令
    2024-10-10
  • 詳解MySQL分組鏈接的使用技巧

    詳解MySQL分組鏈接的使用技巧

    本篇文章主要針對MYSQL中分組以及4種鏈接做了詳細(xì)的分析,有助于大家對這2項MYSQL功能有深入的理解,參考學(xué)習(xí)下吧。
    2017-12-12
  • mysqld-nt: Out of memory (Needed 1677720 bytes)解決方法

    mysqld-nt: Out of memory (Needed 1677720 bytes)解決方法

    這篇文章主要介紹了mysqld-nt: Out of memory (Needed 1677720 bytes)解決方法,需要的朋友可以參考下
    2014-12-12
  • 詳解mysql索引總結(jié)----mysql索引類型以及創(chuàng)建

    詳解mysql索引總結(jié)----mysql索引類型以及創(chuàng)建

    索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。這篇文章主要介紹了詳解mysql索引總結(jié)----mysql索引類型以及創(chuàng)建,有興趣的可以了解一下。
    2016-11-11
  • mysql語句如何插入含單引號或反斜杠的值詳解

    mysql語句如何插入含單引號或反斜杠的值詳解

    這篇文章主要給大家介紹了關(guān)于mysql語句如何插入含單引號或反斜杠的值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • mysql 的replace into實例詳解

    mysql 的replace into實例詳解

    這篇文章主要介紹了mysql 的replace into實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • mysql的語句查詢順序、耗時分析以及查詢調(diào)優(yōu)技巧分享

    mysql的語句查詢順序、耗時分析以及查詢調(diào)優(yōu)技巧分享

    文章詳細(xì)介紹了MySQL中SQL查詢語句的執(zhí)行順序、耗時分析及查詢調(diào)優(yōu)方法,包括使用EXPLAIN、SHOW PROFILE和慢查詢?nèi)罩镜裙ぞ哌M行耗時分析,以及使用索引、避免全表掃描、優(yōu)化查詢語句、分區(qū)表和調(diào)整服務(wù)器配置等技巧進行性能優(yōu)化
    2025-02-02
  • MSSQL產(chǎn)生死鎖的根本原因及解決方法

    MSSQL產(chǎn)生死鎖的根本原因及解決方法

    死鎖是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進下去.此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等的進程稱為死鎖進程
    2016-04-04

最新評論

长白| 察雅县| 都匀市| 江西省| 新闻| 白山市| 蒙阴县| 黄山市| 咸宁市| 铜梁县| 临颍县| 化隆| 阿拉善左旗| 五华县| 水富县| 大城县| 和静县| 岳普湖县| 闽清县| 喀喇沁旗| 古交市| 萨迦县| 醴陵市| 凤城市| 宜良县| 上杭县| 屏边| 新化县| 来安县| 鲁甸县| 长泰县| 石河子市| 台东县| 林甸县| 伊金霍洛旗| 襄垣县| 县级市| 大冶市| 三原县| 阳泉市| 新沂市|