OceanBase學習之路52|如何透過系統變數進行設定?
您可以透過系統變數的設定使 OceanBase 資料庫的行為符合您業務的要求。
變數分類
OceanBase 資料庫的系統變數分為全域性變數和 Session 變數:
-
全域性變數:表示 Global 級別的修改,資料庫同一租戶內的不同使用者共享全域性變數。全域性變數的修改不會隨會話的退出而失效。此外,全域性變數修改後,對當前已開啟的 Session 不生效,需要重新建立 Session 才能生效。
-
Session 變數:表示 Session 級別的修改。當客戶端連線到資料庫後,資料庫會複製全域性變數來自動生成 Session 變數。Session 變數的修改僅對當前 Session 生效。
名稱以 "_" 開頭的變數稱為隱藏變數,如:
_primary_zone_entity_count
。僅供開發人員在故障排查或緊急運維時使用。
系統變數相關檢視
租戶下的系統變數相關檢視如下:
-
INFORMATION_SCHEMA.GLOBAL_VARIABLES
:記錄當前租戶下的全域性變數資訊。 -
INFORMATION_SCHEMA.SESSION_VARIABLES
:記錄當前租戶下的 Session 變數資訊。
有關檢視的詳細介紹,請參見《參考指南》中的 系統檢視。
設定變數
說明
- 設定 Session 級別的變數僅對當前 Session 有效,對其他 Session無效。設定 Global 級別的變數對當前 Session 無效,需要重新登入建立新的 Session 才會生效。
- 設定 Global 級別變數要求當前使用者擁有
SUPER
許可權或ALTER SYSTEM
許可權。
設定 Session/Global 級別變數的 SQL 語法如下:
SET VARIABLE_NAME = 'VALUE' SET GLOBAL VARIABLE_NAME = 'VALUE'
透過 SQL 語句設定 Session/Global 級別變數。示例如下:
obclient> SET ob_query_timeout = 20000000; obclient> SET GLOBAL ob_query_timeout = 20000000;
對於變數值型別為
INT
, 且在
SHOW VARIABLES
命令中顯示 ON/OFF 或者 True/False 的變數,可以透過如下任意方式設定 Session/Global 級別變數。示例如下:
SET foreign_key_checks = ON; SET foreign_key_checks = 1; SET GLOBAL foreign_key_checks = ON; SET GLOBAL foreign_key_checks = 1;
對於全域性變數、只讀變數,我們在建立租戶時也能對其進行設定,語法如下:
CREATE TENANT [IF NOT EXISTS] tenant_name [tenant_characteristic_list] [opt_set_sys_var]; tenant_characteristic_list: tenant_characteristic [, tenant_characteristic...] tenant_characteristic: COMMENT 'string' | {CHARACTER SET | CHARSET} [=] charsetname | COLLATE [=] collationname | REPLICA_NUM [=] num | ZONE_LIST [=] (zone [, zone...]) | PRIMARY_ZONE [=] zone | DEFAULT TABLEGROUP [=] {NULL | tablegroup} | RESOURCE_POOL_LIST [=](poolname [, poolname...]) | LOGONLY_REPLICA_NUM [=] num | LOCALITY [=] 'locality description' opt_set_sys_var: {SET | SET VARIABLES | VARIABLES} system_var_name = expr [,system_var_name = expr] ...
在建立租戶時,將只讀變數
ob_compatibility_mode
初始化為 'mysql',將全域性變數
ob_tcp_invited_nodes
初始化為 '%'。示例如下:
obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1') SET ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';
檢視變數
-
透過
SHOW VARIABLES
語句檢視。檢視 Session/Global 級別變數的 SQL 語法如下:
SHOW VARIABLES [LIKE 'pattern' | WHERE expr] SHOW GLOBAL VARIABLES [LIKE 'pattern' | WHERE expr]
透過 SQL 語句查詢 Session/Global 級別變數。示例如下:
obclient> SHOW VARIABLES LIKE 'ob_query_timeout'; obclient> SHOW VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout'; obclient> SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout'; obclient> SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout'; obclient> SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME LIKE 'ob_query_timeout'; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | ob_query_timeout | 10000000 | +------------------+----------+ 1 row in set (0.00 sec)
返回結果中的列屬性如下表所示:
列名 含義 Variable_name 變數名 Value 變數值 說明
如果連線 sys 租戶後,再透過
ALTER SYSTEM CHANGE TENANT
語句切換到普通租戶,此時查詢的 Session 級別變數仍然是 sys 租戶的 Session 級別的變數。查詢的 Global 級別的變數是切換後普通租戶的 Global 級別變數。有關ALTER SYSTEM CHANGE TENANT
語句的詳細介紹,請參見《 SQL 語法》。 -
透過
SELECT
語句,在本租戶相關檢視中檢視 Session/Global 級別變數資訊。SQL 語法如下:SELECT * FROM view_name WHERE VARIABLE_NAME = '[var name]'
示例如下:
obclient> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout'; obclient> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout';複製
更多資訊
更多變數參考資訊,請參見《參考指南》中的 系統變數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026075/viewspace-2932559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OceanBase學習之路53|多租戶管理引數如何設定?
- OceanBase學習之路51|常用的系統配置引數及系統變數有哪些?變數
- OceanBase學習之路6|透過 Obclient 連線 OceanBase 租戶client
- OceanBase學習之路7|透過 MySQL 客戶端連線 OceanBase 租戶MySql客戶端
- 如何透過CRM系統進行合同管理?
- OceanBase學習之路46|如何透過 SQL 語句或 OCP 建立資源單元?SQL
- OceanBase學習之路36|如何透過 SQL 語句刪除不再使用的資源池?SQL
- win10 pro如何設定系統變數_win10 pro怎麼設定系統變數Win10變數
- 如何透過CRM系統進行銷售機會管理?
- 透過 Python 進行 ArcGIS 環境設定Python
- MySQL 透過set global設定變數的注意點MySql變數
- 【學生資訊管理系統】物件變數或者With塊變數未設定物件變數
- 銷售如何透過CRM系統進行客戶跟進
- OceanBase學習之路38|如何合併資源池?
- OceanBase學習之路54|如何配置多租戶管理?
- 系統預設環境變數PATH設定變數
- 如何透過CRM系統進行市場活動評估?
- win10系統下透過區域語言對語音功能進行設定的方法Win10
- ubuntu-設定系統環境變數Ubuntu變數
- linux系統設定環境變數Linux變數
- OceanBase學習之路16|體驗 OceanBase 資料庫熱點行更新能力資料庫
- 系統學習 TypeScript(四)——變數宣告的初步學習TypeScript變數
- OceanBase學習之路48|最佳效能引數的配置參考
- 透過交換指標變數的值改變大小數字的位置-學習筆記指標變數筆記
- 系統架構設計師學習之路(31)架構
- 如何透過鏈路追蹤進行定時任務診斷
- OceanBase學習之路45|如何檢視資源單元配置?
- 透過CRM系統改變傳統工作模式模式
- OceanBase學習之路50|預設生產引數的建議配置是什麼?
- OceanBase學習之路49|最小資源引數配置是什麼?
- OceanBase學習之路9|連線方式概述
- OceanBase學習之路15|體驗 Operational OLAP
- 如何設定與檢視Linux系統中的環境變數?Linux變數
- OceanBase學習之路40|如何將資源池分配給租戶?
- win7系統如何透過策略組設定硬碟為不可訪問的方法Win7硬碟
- Python私有變數如何定義?Python學習教程!Python變數
- golang學習之路之函式可變引數Golang函式
- 【LINUX 學習】設定檔案系統Linux