如今,大規模、高時效、智能化數據處理已是“剛需”,企業需要更強大的數據平臺,來應對數據查詢、數據處理、數據挖掘、數據展示以及多種計算模型並行的挑戰,湖倉一體方案應運而生。 《實時湖倉實踐五講》是袋鼠雲打造的系列直播活動,將圍繞實時湖倉的建設趨勢和通用問題,邀請奮戰於企業數字化一線的核心產品&技術專家 ...
對於MySQL的系統參數,有些參數只能在全局級別(global)修改,有些參數能在全局和會話(session)級別修改。對於能在會話級別修改的參數,應用用戶也可以在當前會話中修改需要的參數來實現不同的業務需求。
比如sql_mode參數,不同的應用可以根據不同的需求在各自的session中進行修改。此外,在MySQL8.0中推出的hint功能中有一個叫set_var,即可以在執行的SQL語句中自定義session級別參數,十分方便。比如下麵這條sql,通過加hint控制了一條sql的最大執行時間:
mysql> select /*+ set_var(max_execution_time=1000)*/ * from sbtest1; ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
但也不是任何session參數都能隨便修改的,比如下麵這個例子中,修改sql_require_primary_key參數會提示許可權不足,至少需要SESSION_VARIABLES_ADMIN許可權。應用用戶一般是沒有這個許可權的。
mysql> show variables like '%sql_req%'; +-------------------------+-------+ | Variable_name | Value | +-------------------------+-------+ | sql_require_primary_key | ON | +-------------------------+-------+ 1 row in set (0.00 sec) mysql> set sql_require_primary_key=0; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
對於這一類參數,在官方文檔中都會有如下說明,用戶需要有足夠的許可權才能修改: