精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产成人精品免费看视频| aⅴ在线免费观看| 91亚洲精品国偷拍自产在线观看 | 国产精品毛片久久久久久| 国产精品va在线| 中文字幕第69页| 日韩激情欧美| 欧美日韩视频在线| 亚洲 国产 日韩 综合一区| 国产又大又长又粗| 黄色另类av| 亚洲天堂av综合网| 第一区免费在线观看| 欧美xxxx做受欧美88bbw| 成人av在线电影| 国产成人精品视频在线| 精品一区二区在线观看视频| 成人中文字幕视频| 色丁香久综合在线久综合在线观看| 亚洲欧美电影在线观看| 亚洲国产精品国自产拍久久| 久久精品人人做人人爽电影蜜月| 在线成人中文字幕| 中文字幕在线视频播放| 天天操天天操天天操天天操天天操| 国产成人无码av| 成人国产精品一级毛片视频| 欧美中文字幕不卡| 高清成人免费视频| 中国人与牲禽动交精品| 国产精品白嫩美女在线观看| 成人欧美一区二区三区黑人一| 久草综合在线| 一区二区视频在线| 精品国产一区二区三区麻豆小说| 日韩xxx视频| 极品日韩av| 中文字幕综合在线| 日本不卡高字幕在线2019| 公共露出暴露狂另类av| 欧美一区二区在线观看视频| 人操人视频在线观看| 久久国产66| 国内精品免费午夜毛片| 亚洲一级中文字幕| 免费在线看电影| 17c精品麻豆一区二区免费| 痴汉一区二区三区| www日本高清| 久久99久久久久久久久久久| 国产91亚洲精品| 免费在线不卡视频| 黄色成人精品网站| 久久久久久成人| 一区视频免费观看| 亚洲欧美在线专区| 欧美精品手机在线| 丰满少妇一区二区| 国产一区不卡| 亚洲欧洲在线播放| 成人免费无码大片a毛片| 成人av动漫| 日韩免费福利电影在线观看| 182午夜视频| 亚洲综合伊人| 欧美另类z0zxhd电影| 久久午夜夜伦鲁鲁一区二区| gay欧美网站| 欧美视频一二三| 精品这里只有精品| av成人影院在线| 亚洲v精品v日韩v欧美v专区| 日韩人妻无码精品久久久不卡| 天堂av中文在线| 中文在线一区二区| 亚洲国产精品www| 国产视频网址在线| 中文字幕av不卡| 杨幂一区欧美专区| 麻豆免费在线视频| 亚洲人成网站影音先锋播放| 偷拍盗摄高潮叫床对白清晰| 在线观看日本黄色| 亚洲另类春色校园小说| 亚洲免费电影在线观看| 少妇高潮惨叫久久久久| 在线观看免费一区二区| 久久久久久久久久久免费精品| 国产一卡二卡在线播放| 在线视频亚洲| 男女男精品视频网| 欧美成人精品在线| 国产精品99精品无码视| 国产精品亚洲产品| 国产精品日日做人人爱| 国产欧美综合视频| 粉嫩在线一区二区三区视频| 91精品免费视频| 性猛交xxxx乱大交孕妇印度| 不卡一区二区三区四区| 国产一区福利视频| 涩涩视频在线观看免费| 国产三级精品三级| 日本一本草久p| segui88久久综合| 欧美亚洲国产一区在线观看网站 | 舔着乳尖日韩一区| 五月婷婷激情久久| 欧美久久一区二区三区| 日韩高清av在线| 免费毛片视频网站| 66久久国产| 5278欧美一区二区三区| 亚洲最大成人av| 丁香婷婷综合色啪| 欧美裸体网站| 日韩专区在线| 亚洲精品免费在线观看| 无码人妻丰满熟妇区毛片18| 91成人精品观看| 日韩精品亚洲精品| 妺妺窝人体色www聚色窝仙踪 | 中文字幕21页在线看| 欧美亚洲一区二区在线| 免费看毛片的网站| 欧美激情成人| 国产精品99蜜臀久久不卡二区| 精品人妻少妇嫩草av无码专区| 国产午夜精品一区二区三区四区| 成人区一区二区| 婷婷激情成人| 国产丝袜一区二区| 麻豆changesxxx国产| 奇米影视一区二区三区| 精品国产乱码久久久久| 超碰人人在线| 欧美日韩免费不卡视频一区二区三区 | 超碰免费在线观看| 欧美日韩裸体免费视频| 亚洲黄色小说在线观看| 99精品综合| 国产成人avxxxxx在线看| 少妇精品视频一区二区| 亚洲美女在线国产| 欧美一级特黄a| 久久成人av| 538国产精品一区二区免费视频| 朝桐光av在线一区二区三区| 亚洲欧洲日产国产综合网| 玩弄japan白嫩少妇hd| 欧洲vs亚洲vs国产| 久久久久久国产免费| av中文字幕免费| 亚洲另类在线视频| 中文字幕第22页| 日韩精品久久久久久久电影99爱| 国产成人精品视| 久草在线青青草| 色综合咪咪久久| 丰满少妇一区二区三区| 免费欧美在线| 欧美黑人3p| 二吊插入一穴一区二区| 中文字幕不卡在线| 国内免费久久久久久久久久久| 久久青青草原亚洲av无码麻豆| av午夜精品一区二区三区| 青春草国产视频| 91蝌蚪精品视频| 欧美激情亚洲视频| 人妻偷人精品一区二区三区| 亚洲18色成人| 亚洲av无码一区二区二三区| 午夜一区二区三区不卡视频| 久久综合婷婷综合| 国产精品迅雷| 一区三区二区视频| 一级黄色片在线播放| 最新中文字幕一区二区三区| 天天看片天天操| 欧美在线亚洲| 欧美成人免费一级人片100| 在线观看久久久久久| 日韩资源在线观看| 日韩欧美中文字幕一区| 亚洲精品中文在线| 久久99久久99小草精品免视看| 99精品全国免费观看视频软件| 国产成人av| 曰本一区二区三区视频| 久久99高清| 天天精品视频| 国产一区丝袜| 亚洲综合影院| 久久爱.com| www.欧美| 久久超级碰碰| 免费黄色成人| 精品视频成人| 2020国产在线视频| 精品乱子伦一区二区| 国产成人精品一区二三区| 一区二区三区少妇| 激情视频免费网站| 日本一本二本在线观看| 天天干天天综合| 涩视频在线观看| 永久免费观看片现看| 日本三级中文字幕| 羞羞色院91蜜桃| www.xxx国产| 国产精品极品美女在线观看| 这里只有精品免费| 国产小视频在线看| 国产精品亚洲一区二区三区妖精| 国产中文字幕二区| 99久久综合| 另类小说综合网| 国产精品欧美一区二区三区不卡| 久久亚洲精品一区| 美州a亚洲一视本频v色道| 日韩一区二区在线观看| 日日夜夜狠狠操| 一区二区三区四区中文字幕| 欧美日韩高清丝袜| 高清不卡在线观看av| 免费看污黄网站| 国产情侣一区| av动漫在线播放| 综合伊思人在钱三区| 亚洲直播在线一区| 成人黄色免费网站| 26uuu亚洲国产精品| 国产成人l区| 成人app下载| 久久久亚洲综合| 亚洲精品日韩在线| 欧美一级bbbbb性bbbb喷潮片| 91天堂在线视频| 亚洲精品一卡二卡三卡四卡| 成人av一级片| 一级片视频免费看| 国产91精品看黄网站在线观看| 91高清在线| 亚洲国产黄色| 青青草成人激情在线| 国产一区二区三区精品在线观看| 欧美在线一级视频| 2021天堂中文幕一二区在线观| 久久久精品视频成人| 日本不卡三区| 国产一区二区三区毛片| 欧美女v视频| 日韩精品黄色网| 殴美一级特黄aaaaaa| 欧美二区乱c少妇| 真实的国产乱xxxx在线91| 色哟哟国产精品| 中文字幕免费观看| 精品久久久久久久久久ntr影视| 免费网站观看www在线观| 亚洲欧美欧美一区二区三区| 日本高清一二三区| 亚洲天堂中文字幕| 真人bbbbbbbbb毛片| 国产精品一区二区久激情瑜伽| 在线观看的毛片| 免费观看成人av| 国产一级片自拍| 久久精品国产999大香线蕉| 性生活免费在线观看| 精品无人码麻豆乱码1区2区 | 国产精品999视频| 影音先锋久久资源网| 日韩精品一区在线视频| 亚洲午夜精品一区二区国产 | 可以在线观看的黄色| 亚洲美女av网站| 国产天堂素人系列在线视频| 尤物yw午夜国产精品视频| 免费在线观看av网站| 日本sm残虐另类| 91丨porny丨探花| av成人毛片| 日韩一级片播放| 卡一卡二国产精品| 久久aaaa片一区二区| 顶级嫩模精品视频在线看| 91精品啪在线观看国产| 91啪九色porn原创视频在线观看| 久久成人激情视频| 亚洲欧洲av一区二区三区久久| 国产av 一区二区三区| 亚洲高清免费视频| 免费看一级视频| 欧美四级电影网| 成人黄色免费视频| 亚洲精品国精品久久99热| 国产乱子伦三级在线播放| 亚洲人av在线影院| 国产精品剧情一区二区在线观看 | 九色91porny| 91丨九色porny丨蝌蚪| 亚洲色图欧美色| 亚洲男人天堂一区| 久久亚洲av午夜福利精品一区| 偷拍日韩校园综合在线| 最近中文字幕免费观看| 精品三级在线看| yjizz视频网站在线播放| 神马国产精品影院av| 91豆花视频在线播放| 国产伦精品免费视频| 57pao国产一区二区| 亚洲精品国产系列| 伊人成人在线视频| 亚洲综合色在线观看| gogo大胆日本视频一区| 懂色av粉嫩av浪潮av| 亚洲国产精品人人做人人爽| 中文字幕第31页| 亚洲国内精品视频| 黄色av免费在线| 日韩三级在线观看| 狠狠色伊人亚洲综合网站l| 久久久久久av| 中文字幕一区二区三区四区久久| 中文字幕不卡每日更新1区2区| 久久午夜激情| 菠萝菠萝蜜网站| 午夜成人免费电影| 人妻一区二区三区四区| 九九视频直播综合网| 91精品在线免费视频| 亚洲一区三区电影在线观看| 日韩1区2区日韩1区2区| 全黄一级裸体片| 日本高清免费不卡视频| 理论视频在线| 国产精品福利无圣光在线一区| 奇米亚洲欧美| 日本美女高潮视频| 欧美国产精品久久| 欧美另类高清videos的特点| 亚洲天堂色网站| av在线日韩| 亚洲成人蜜桃| 九色综合国产一区二区三区| 在线观看天堂av| 91麻豆精品国产91久久久久| av大大超碰在线| 国产高清在线一区| 国产日韩视频| 亚洲精品一区二区三区影院忠贞| 一本大道av伊人久久综合| 精品电影在线| 国产综合在线观看视频| 欧美黄色aaaa| 一边摸一边做爽的视频17国产| 欧美日韩美女视频| 成年女人的天堂在线| 91免费欧美精品| 韩日在线一区| 亚洲成av人片在线观看无| 欧美性xxxxx极品| 国产精品久久久久久久龚玥菲| 国产精品国产三级国产aⅴ9色| 日韩久久综合| a级大片免费看| 午夜婷婷国产麻豆精品| 精品电影在线| 亚洲综合在线中文字幕| 亚洲美女黄色| 免费看污片的网站| 这里是久久伊人| 538在线视频| 日韩精品成人一区二区在线观看| 久久99久久99小草精品免视看| 麻豆chinese极品少妇| 亚洲美女av网站| 国产一区二区三区黄网站| 玩弄中年熟妇正在播放| 国产欧美精品一区二区色综合朱莉| 国产乱码久久久| 4438全国亚洲精品在线观看视频| 成人在线免费观看视频| 丰满人妻一区二区三区大胸| 欧美日韩黄色大片| 最新国产在线观看| 国产在线一区二| 久久精品国产在热久久| 九九热国产视频| 日韩色av导航| 一区二区导航| 波多野结衣电影免费观看| 色网综合在线观看| 青草青在线视频| 色噜噜色狠狠狠狠狠综合色一| 国产精品99久久不卡二区| 自拍偷拍校园春色|