精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GreatSQL 在SQL中使用 HINT 語法修改會話變量

數據庫 其他數據庫
在 GreatSQL 支持一種新的優化Hint,名字叫SET_VAR,這個特性支持用戶在查詢語句里修改 GreatSQL 數據庫的一些會話變量,當然修改只是對當前查詢會話生效,不會影響到其他會話。

在 GreatSQL 支持一種新的優化Hint,名字叫SET_VAR,這個特性支持用戶在查詢語句里修改 GreatSQL 數據庫的一些會話變量,當然修改只是對當前查詢會話生效,不會影響到其他會話。

SET_VAR語法

SET_VAR這個hint用于臨時設置系統變量的會話值(在單個語句的持續時間內有效)

SET_VAR的用法: SET_VAR(var_name=value)

var_name是被臨時修改的會話變量名,value是會話變量的取值

greatsql> SELECT @@unique_checks;SELECT /*+ SET_VAR(unique_checks=OFF) */ @@unique_checks;SELECT @@unique_checks;
SELECT /*+ SET_VAR(sort_buffer_size = 16M) */ name FROM people ORDER BY name;
INSERT /*+ SET_VAR(foreign_key_checks=OFF) */ INTO t2 VALUES(2);
SELECT /*+ SET_VAR(optimizer_switch = 'mrr_cost_based=off') */ 1;

GreatSQL 8.0 之前的操作方法

在 GreatSQL 8.0 之前要對一個查詢進行會話變量修改,需要怎么操作:

1.查詢之前的系統變量

greatsql> SELECT @@optimizer_switch;

2.備份系統變量

greatsql> SET @old_optimizer_switch = @@optimizer_switch;

3.設置新的變量

greatsql> SET optimizer_switch='index_merge=off';

4.運行查詢語句

greatsql> SELECT empno,ename,deptno from emp limit 1;

5.恢復之前的系統變量

greatsql> SET optimizer_switch = @old_optimizer_switch;

是不是有點繁瑣,現在我們使用SET_VAR這個新特性,很方便的就可以做這個操作了。

GreatSQL 8.0 的操作方法

greatsql>explain SELECT  empno,ename,deptno FROM emp WHERE  deptno=10 or ename='CLARK';
+----+-------------+-------+------------+-------------+------------------+------------------+---------+------+------+----------+--------------------------------------------+
| id | select_type | table | partitions | type        | possible_keys    | key              | key_len | ref  | rows | filtered | Extra                                      |
+----+-------------+-------+------------+-------------+------------------+------------------+---------+------+------+----------+--------------------------------------------+
|  1 | SIMPLE      | emp   | NULL       | index_merge | deptno,idx_ename | deptno,idx_ename | 5,63    | NULL |    4 |   100.00 | Using union(deptno,idx_ename); Using where |
+----+-------------+-------+------------+-------------+------------------+------------------+---------+------+------+----------+--------------------------------------------+
1 row in set, 1 warning (0.01 sec)

從執行計劃上看,SQL語句使用了索引合并(type=index_merge),如果不想該sql使用索引合并,則可以通過SET_VAR進行控制。

greatsql>explain SELECT /*+ SET_VAR(optimizer_switch='index_merge=off') */  empno,ename,deptno FROM emp WHERE deptno=10 or ename='CLARK';
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys    | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | emp   | NULL       | ALL  | deptno,idx_ename | NULL | NULL    | NULL |   14 |    38.10 | Using where |
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec

這個新特性是不是很方便呢,之前由于優化器的某些設置,少量sql語句選擇了錯誤的執行計劃,導致查詢語句性能低下,又不能隨意更改線上數據庫的變量,有了SET_VAR這個新特性,對于這種情況,可以考慮在查詢語句中使用set_var優化這條語句。

我們知道,使用hash jion時,會使用到join buffer,join buffer的大小由join_buffer_size控制,其默認值為256k,哈希連接不能使用超過此數量的內存。當哈希連接所需的內存超過可用量時,GreatSQL將使用磁盤上的文件來處理此問題,使用到了磁盤文件,性能會下降,如果只想針對單條語句設置join buffer就可以使用SET_VAR。

CREATE TABLE t1 (c1 INT, c2 INT);
CREATE TABLE t2 (c1 INT, c2 INT);
CREATE TABLE t3 (c1 INT, c2 INT);

分別對t1,t2,t3 插入100萬,200萬,300萬數據

greatsql> SET @@cte_max_recursion_depth = 99999999;
greatsql> INSERT INTO t1
       WITH recursive t AS (
       SELECT 1 AS c1  ,1 AS c2
       UNION ALL
       SELECT t.c1+1,t.c1*2
       FROM t
       WHERE t.c1 <1000000
      )
       SELECT * FROM t;
Query OK, 1000000 rows affected (10.63 sec)
Records: 1000000  Duplicates: 0  Warnings: 0

greatsql> SELECT @@join_buffer_size;
+--------------------+
| @@join_buffer_size |
+--------------------+
|             262144 |
+--------------------+
1 row in set (0.00 sec)

greatsql> SELECT * FROM t1
           JOIN t2 ON (t1.c1 = t2.c1 AND t1.c2 < t2.c2)
           JOIN t3 ON (t2.c1 = t3.c1);
Empty set (6.91 sec)

greatsql> SELECT /*+ SET_VAR(join_buffer_size=16777216) */ * FROM t1
           JOIN t2 ON (t1.c1 = t2.c1 AND t1.c2 < t2.c2)
           JOIN t3 ON (t2.c1 = t3.c1);
Empty set (5.87 sec)

注意事項

1、并非所有會話變量都允許與SET_VAR一起使用。如果設置不支持用SET_VAR更改的系統變量,則會出現警告。

greatsql> SELECT /*+ SET_VAR(collation_server = 'utf8mb4') */ 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set, 1 warning (0.01 sec)

greatsql> SHOW WARNINGS\G
*************************** 1. row ***************************
 Level: Warning
  Code: 3637
Message: Variable 'collation_server' cannot be set using SET_VAR hint.
1 row in set (0.00 sec)

2、SET_VAR語法只允許設置單個變量,但可以給出多個提示來設置多個變量:

SELECT /*+ SET_VAR(optimizer_switch = 'mrr_cost_based=off')
 SET_VAR(max_heap_table_size = 1G) */ 1;

3、如果沒有這個系統變量或變量值不正確,則忽略SET_VAR提示并發出警告

SELECT /*+ SET_VAR(max_size = 1G) */ 1;
SELECT /*+ SET_VAR(optimizer_switch = 'mrr_cost_based=yes') */ 1;

第1條語句沒有 max_size 這個變量,語句2 的mrr_cost_based= on或者off, 企圖將其設置為 yes是錯誤的,這兩個語句的 hint 都會被忽略,并產生一個warning。

greatsql> SELECT /*+ SET_VAR(max_size = 1G) */ 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set, 1 warning (0.00 sec)

greatsql> show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 3128 | Unresolved name 'max_size' for SET_VAR hint |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

greatsql> SELECT /*+ SET_VAR(optimizer_switch = 'mrr_cost_based=yes') */ 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set, 1 warning (0.00 sec)

greatsql> show warnings;
+---------+------+-------------------------------------------------------------------------------+
| Level   | Code | Message                                                                       |
+---------+------+-------------------------------------------------------------------------------+
| Warning | 1231 | Variable 'optimizer_switch' can't be set to the value of 'mrr_cost_based=yes' |
+---------+------+-------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4、SET_VAR提示只允許在語句級別使用。如果在子查詢中使用,則會被忽略并給出警告。

復制會忽略復制語句中的SET_VAR,以避免潛在的安全問題。

SET_VAR支持的變量

SET_VAR只是對部分變量可以用的,整理了GreatSQL主要支持的變量供參考:

  • bulk_insert_buffer_size
  • default_table_encryption
  • default_tmp_storage_engine
  • div_precision_increment
  • end_markers_in_json
  • eq_range_index_dive_limit
  • foreign_key_checks
  • group_concat_max_len
  • 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
  • optimizer_switch
  • optimizer_trace_max_mem_size
  • range_alloc_block_size
  • read_buffer_size
  • read_rnd_buffer_size
  • secondary_engine_cost_threshold
  • select_into_buffer_size
  • select_into_disk_sync
  • select_into_disk_sync_delay
  • show_create_table_skip_secondary_engine
  • sort_buffer_size
  • sql_auto_is_null
  • sql_big_selects
  • sql_buffer_result
  • sql_mode
  • sql_require_primary_key
  • sql_safe_updates
  • sql_select_limit
  • time_zone (≥ 8.0.17)
  • timestamp
  • tmp_table_size
  • unique_checks
  • updatable_views_with_limit
  • use_secondary_engine
  • windowing_use_high_precision

參考文檔

  • https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-set-var
  • https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
  • https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html


責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2009-06-24 10:49:08

Unix

2020-03-20 14:48:46

SpringBootJava分布式

2011-07-21 14:50:06

Core Data SQL

2011-12-25 15:37:51

ibmdw

2012-07-12 10:22:58

Ubuntu系統菜單

2023-07-12 14:13:03

BashLinux

2009-07-04 00:50:38

2010-07-20 14:41:55

Perl語法

2019-09-16 19:00:48

Linux變量

2021-03-14 09:28:24

Linux Shell腳本

2010-07-19 12:49:55

Perl修改文件

2009-06-25 16:49:24

Hibernate

2013-12-13 17:21:14

Lua腳本語言

2023-11-17 12:04:39

GORM并發

2023-04-12 15:25:09

Bytrace鴻蒙

2023-05-04 07:33:39

Rust變量常量

2021-03-18 10:14:06

Python工具代碼

2015-03-25 12:55:48

2010-04-12 16:12:07

Oracle HINT

2024-09-11 08:00:00

Java優于反射開發
點贊
收藏

51CTO技術棧公眾號

成人免费福利| 免费在线看v| 亚洲一级影院| 亚洲免费伊人电影在线观看av| 99re在线视频免费观看| 国产女人在线观看| 国产成人精品免费网站| 欧美专区在线播放| 欧美大片xxxx| 日韩系列在线| 欧美一区二区在线视频| 日本中文字幕网址| 在线a免费看| 不卡av电影在线播放| 国产精品日韩欧美| 国产午夜精品一区二区理论影院| 狠狠色丁香婷婷综合影院| 日韩亚洲电影在线| av网站在线不卡| 国产传媒在线| 成人欧美一区二区三区白人| 老牛影视免费一区二区| 国产乱子伦精品无码码专区| 久久久精品日韩| 欧美精品xxx| 国产黄色录像片| 一道本一区二区三区| 日韩美女视频一区二区在线观看| 日本xxxxxxx免费视频| 成人影音在线| 亚洲日本护士毛茸茸| 日本午夜精品一区二区三区| 欧美在线 | 亚洲| 韩日精品视频一区| 国产精品爽爽爽| 日韩久久中文字幕| 影音先锋亚洲精品| 欧美裸体男粗大视频在线观看| 国产午夜精品久久久久久久久| 乱亲女h秽乱长久久久| 欧美大片顶级少妇| 亚洲丝袜在线观看| 国产美女亚洲精品7777| 欧美精品18+| 性欧美1819| 欧美一级二级视频| 色噜噜偷拍精品综合在线| 一本大道熟女人妻中文字幕在线| 欧美1234区| 亚洲网友自拍偷拍| www.18av.com| 欧美韩日亚洲| 亚洲一二三四区不卡| 激情五月婷婷六月| 黄网站在线免费看| 樱花影视一区二区| 日本一道在线观看| 欧美xxx黑人xxx水蜜桃| 亚洲在线观看免费| 妞干网在线视频观看| 黄频免费在线观看| 欧美视频精品一区| 国产第一页视频| 欧美日韩国产v| 欧美影视一区在线| 中文字幕精品一区二区三区在线| 欧美一级在线| 91精品国产麻豆国产自产在线| 色婷婷激情视频| 91免费精品国偷自产在线在线| 精品日韩在线观看| 黄色录像a级片| 国产成人短视频在线观看| 一区二区三区四区在线观看视频| 欧美人与禽zoz0善交| 欧美成人激情| 欧美人与性动交| 国产一级精品视频| 日av在线不卡| 亚洲www永久成人夜色| 亚洲精品久久久久avwww潮水| 成人网男人的天堂| 日韩精品av一区二区三区| 永久免费av在线| 一区二区三区不卡视频| 天天夜碰日日摸日日澡性色av| 综合另类专区| 欧美美女一区二区| 美女黄色一级视频| 成人黄色av| 色综合久久88色综合天天看泰| 国产精品免费av一区二区| 老司机午夜精品视频| 成人黄色免费在线观看| 人妻少妇精品无码专区久久| 国产欧美日韩亚州综合 | 狠狠爱www人成狠狠爱综合网 | 色网站在线播放| 免费观看日韩电影| 国产精品乱码视频| av网站在线播放| 亚洲成人一区二区在线观看| 91蝌蚪视频在线观看| 一区二区三区视频播放| 国产亚洲欧美另类中文| 精品少妇一二三区| 日本免费在线视频不卡一不卡二| 成人3d动漫一区二区三区91| 国产www.大片在线| 亚洲成av人片观看| 伊人成人222| 亚洲精品国产动漫| 欧美激情在线播放| 国产精品国产三级国产普通话对白| 91在线小视频| 日韩在线视频在线| 成人四虎影院| 亚洲美女av电影| 国产在线综合网| 国产真实精品久久二三区| 蜜桃999成人看片在线观看| 怡红院红怡院欧美aⅴ怡春院| 欧美亚洲自拍偷拍| 免费a级黄色片| 欧美va天堂在线| 91精品国产自产在线观看永久| 日漫免费在线观看网站| 亚洲成人7777| 欧美一级大片免费看| 婷婷精品进入| 国产精品美女久久久免费 | japansex久久高清精品| 亚洲人成电影在线播放| 欧美不卡视频在线观看| 国产成人精品免费视频网站| 懂色av粉嫩av蜜臀av| 国产精品久久久久久妇女| 亚洲男人天堂手机在线| 欧美bbbbbbbbbbbb精品| 国产成人福利片| 欧美 日韩 国产精品| 国产亚洲高清在线观看| 久久久97精品| jizz中国少妇| 亚洲激情av在线| 亚洲一二区在线观看| 99欧美视频| 91久久久在线| 岛国中文字幕在线| 日韩一区二区三区免费观看| 永久看片925tv| 国产精品一色哟哟哟| 91嫩草国产丨精品入口麻豆| 美女精品视频在线| 欧美黄色片视频| 日本波多野结衣在线| 亚洲国产欧美在线人成| 超碰男人的天堂| 销魂美女一区二区三区视频在线| 蜜桃久久精品乱码一区二区| 国产日韩另类视频一区| 一本色道久久88亚洲综合88| 中文在线免费观看| 国产精品久久久一本精品| 国产精品自拍视频在线| 自产国语精品视频| 粉嫩av四季av绯色av第一区| 欧美私密网站| 一区二区三区精品99久久| 在线观看黄色网| 亚洲视频精选在线| 91视频在线免费| 日韩av一区二区三区四区| 亚洲一二三区精品| 亚洲精品一区二区三区在线| 亚洲18私人小影院| 国产日产精品久久久久久婷婷| 欧美理论电影在线| 国产一级一级片| 久久久久久久性| 麻豆网站免费观看| 亚洲一区二区三区免费在线观看 | 国产在线视频你懂得| 欧美日韩国产区一| 国产一级性生活| 国产日韩精品一区二区浪潮av| 亚洲一区二区福利视频| 1024日韩| 亚洲最大色综合成人av| 国产一区二区三区不卡av| 国产成人综合久久| 最新超碰在线| 亚洲欧美中文字幕| 国产suv精品一区二区69| 午夜精彩视频在线观看不卡| 国产在线免费av| 粉嫩av亚洲一区二区图片| 欧美污视频网站| 欧美日本一区二区高清播放视频| 免费亚洲一区二区| 久久综合偷偷噜噜噜色| 浅井舞香一区二区| 综合久久2o19| 综合久久五月天| 日韩专区一区二区| 日韩久久久精品| 又骚又黄的视频| 欧美日韩国产中文精品字幕自在自线| 欧美视频一区二区在线| 91久色porny| 日本一级大毛片a一| 青青草国产成人av片免费| 男女超爽视频免费播放| 国产精品久久久久蜜臀| 免费看成人av| 精品视频自拍| 99国产超薄肉色丝袜交足的后果| 先锋欧美三级| 欧美一区深夜视频| 超清av在线| 欧美www在线| 中文字幕在线播放| 亚洲三级av在线| 无码国产精品一区二区免费16| 日韩一区二区在线看片| 亚洲无码精品在线观看| 色老头久久综合| xxxx.国产| 午夜精品一区二区三区免费视频 | 欧美精品成人| 在线观看免费91| 欧美自拍偷拍| 日本一区不卡| 国产一区二区三区四区五区| 欧美不卡三区| 亚洲自拍电影| 久久精品日产第一区二区三区精品版| 91精品国产乱码久久久竹菊| 5g影院天天爽成人免费下载| 老司机亚洲精品一区二区| 91视频九色网站| 91麻豆精品国产综合久久久| 国产色视频一区| 日韩毛片免费看| 国产欧美韩国高清| 日韩久久99| 91免费综合在线| 国产精品一级在线观看| 91网免费观看| 91蝌蚪精品视频| 国产伦精品一区二区三区视频黑人| 亚洲大奶少妇| 动漫美女被爆操久久久| 狼人天天伊人久久| 久久久久久九九| 国产剧情在线观看一区| 日韩福利一区二区三区| 成人在线免费小视频| 亚洲精品成人a8198a| 久久精品播放| 在线观看三级网站| 在线精品观看| 激情综合在线观看| 日韩中文字幕不卡| 国产高清999| 福利一区在线观看| 一本色道久久综合亚洲精品图片| 久久精品综合网| 韩国一级黄色录像| 亚洲电影在线播放| 在线能看的av| 欧美日韩在线一区二区| 国产欧美一级片| 亚洲福利视频久久| 韩国三级av在线免费观看| xxxx欧美18另类的高清| heyzo在线播放| 国产精品18久久久久久麻辣| 91精品国产自产观看在线| 国产91精品入口17c| 九九热爱视频精品视频| 中文字幕不卡每日更新1区2区| 国产主播精品| 国产精品一色哟哟| 免费在线观看日韩欧美| 国产免费无码一区二区| 久久噜噜亚洲综合| 久久久久久久久毛片| 欧美视频在线观看 亚洲欧| 亚洲一区二区视频在线播放| 精品欧美一区二区三区精品久久 | 99精品中文字幕在线不卡| 蜜桃av噜噜一区二区三| 亚洲一区二区日韩| 国产成人a亚洲精v品无码| 精一区二区三区| 日韩av在线免费观看一区| 97人人模人人爽视频一区二区| 色999日韩自偷自拍美女| 国产精品网站在线看| 日韩欧美视频一区二区| 欧美私人啪啪vps| 黑人粗进入欧美aaaaa| 国产一区二区三区久久久| 五月婷婷综合在线观看| 亚洲品质自拍视频| 国产一级淫片a视频免费观看| 91精选在线观看| 国产一二三区在线视频| 欧美激情亚洲一区| 亚洲二区av| 欧美午夜视频在线| 亚洲天堂男人| 在线一区二区不卡| 国产精品无人区| 伊人中文字幕在线观看| 精品三级av在线| 在线观看av免费| 国产色视频一区| 欧美三级美国一级| 波多野结衣家庭教师在线播放| 国产成人一级电影| 久久噜噜色综合一区二区| 在线观看网站黄不卡| 色吊丝在线永久观看最新版本| 欧美精品一区三区| 91精品一区| 综合网五月天| 麻豆久久久久久久| 91在线无精精品白丝| 欧美视频免费在线观看| 天堂网av在线播放| 欧美大片免费看| 久久免费福利| 99久re热视频精品98| 精品一二线国产| 国产麻豆a毛片| 欧美日韩久久久| av片在线看| 国产精品成人av在线| 深爱激情综合| 人妻丰满熟妇av无码区app| 91免费视频网| 久久精品视频1| 亚洲人成电影网站色…| 另类专区亚洲| 日本精品一区二区| 丝袜美腿高跟呻吟高潮一区| 加勒比一区二区| 色噜噜狠狠色综合中国| 爱爱爱免费视频在线观看| 国产成人久久精品| 成人在线免费观看网站| 手机在线国产视频| 亚洲激情校园春色| 东京干手机福利视频| 97精品视频在线观看| 日韩中出av| 亚洲狼人综合干| 国产精品色在线| 国产精品无码AV| 欧美风情在线观看| 久久香蕉精品香蕉| 日日碰狠狠躁久久躁婷婷| 国产日韩精品久久久| 91超薄丝袜肉丝一区二区| 久久久av网站| 成人精品动漫一区二区三区| 欧美二区在线视频| 国产日产欧产精品推荐色| 亚洲一区二区色| 久久99久久99精品免观看粉嫩 | 中文字幕在线观看2018| 日韩精品一区二区在线| 国产美女高潮在线| 日本一区二区三区在线视频| 久久99精品久久只有精品| 久久久国产精品黄毛片| 国产视频精品在线| 中文字幕综合| 国产在线精品91| 国产精品久久久爽爽爽麻豆色哟哟| 精品人妻伦一二三区久久| 57pao精品| 天天操综合网| 香蕉视频污视频| 欧美色倩网站大全免费| 在线观看操人| 日本一区二区免费看| 国产在线乱码一区二区三区| 五月婷婷激情网| 中文字幕欧美日韩在线| 成人自拍在线| 黑森林精品导航| 亚洲国产精品久久久久婷婷884 | 中文字幕av一区二区三区免费看 | 国产欧美第一页| 清纯唯美亚洲激情| 欧美在线二区| 神马久久久久久久久久久|