OceanBase 配置项系统变量实现及应用详解(2):系统变量的定义及使用场景
在上一篇博客,配置项的定义及使用方法,详细阐述了配置项的概念及其基本应用方式,这些配置项能够调控集群或租户的行为方式。然而,在实际使用OceanBase的过程中,我们有时仅希望针对当前会话调整某些行为特性,且在关闭会话连接后,这些调整不会影响后续的使用。此时,我们就需要借助“系统变量”来实现这一目标。
系统变量和配置项有一些相似之处,但是生效范围和实现方式却有所差异。本期博客将会介绍“系统变量”的概念和用法,帮助大家理解和使用“系统变量”。
什么是系统变量?
变量(variable)的概念来源于 MySQL,在 OceanBase 中,为了与编程语言中的“变量”概念区分开,将这类控制数据库行为的变量称作“系统变量”。
在与数据库建立会话(session)连接后,可以通过修改一些变量来控制租户的行为和SQL命令的执行方式,这些变量就是“系统变量”。
系统变量示例:
// 是否自动提交事务
autocommit = false
// 查询超时时间,单位:微秒(us)
ob_query_timeout = 10000000
// 是否记录历史sql命令
ob_enable_sql_audit = true
系统变量分为全局(global)级别和会话(session)级别,global级别也可以视作租户级别,仅在当前租户范围内生效;session级别仅在当前会话中生效,session级别变量优先级高于global级别变量。
全局级别的系统变量(global变量),在修改之后不会立即生效,但之后新建的会话都会使用该变量的新值;会话级别的系统变量(session变量),在修改会立即生效,但之后新建的会话都会使用该变量的旧值。可以理解为global变量直接写到磁盘,而session变量只写到缓存且不持久化。
global变量会利用schema机制进行持久化(以内部表的形式存储),而不是像配置项一样直接写到文件;session变量不会持久化,无论是断开连接还是重启observer,都会导致session变量失效。
查询系统变量
系统变量可以通过“show variables”命令查询,也可以通过内部表或视图进行查询。
通过“show variables”命令查询系统变量
- 查询当前租户的 global 变量
show global variables like '%xxx%';
select @@global.xxx;
- 查询当前会话的 session 变量
show variables like '%xxx%';
select @@xxx;
select @@session.xxx;
通过内部表和视图查询系统变量
global变量和session变量存在于不同的表中,通过执行“select * from xxx; ”命令即可查询所有系统变量,增加where参数也可查找指定变量。
- __all_sys_variable
当前租户的global级别变量。
- __all_virtual_sys_variable
所有租户的global级别变量,基于 __all_sys_variable 进行查询。
- __tenant_virtual_global_variable
当前租户的global级别变量,“show global variables”命令查询的虚拟表。
- __tenant_virtual_session_variable
当前租户的session级别变量,“show variables”命令查询的虚拟表。
- CDB_OB_SYS_VARIABLES
所有租户的global级别变量,即 __all_virtual_sys_variable 的视图。
- INFORMATION_SCHEMA.GLOBAL_VARIABLES
当前租户的global级别变量,基于 __tenant_virtual_global_variable 进行查询。
- INFORMATION_SCHEMA.SESSION_VARIABLES
当前租户的session级别变量,查询结果比 __tenant_virtual_session_variable 更加全面。
修改系统变量
系统变量可以通过"set xxx=xx"命令进行修改。注意不要修改相关内部表或视图,因为这样做并不能真正地修改变量的值,还会带来一些潜在的问题。
- 修改当前租户的 global 变量
set global ob_max_read_stale_time = 5000000;
set @@global.ob_max_read_stale_time = 5000000;
- 修改当前会话的 session 变量
set ob_max_read_stale_time = 5000000;
set @@ob_max_read_stale_time = 5000000;
set @@session.ob_max_read_stale_time = 5000000;
配置项对比系统变量
集群配置项和租户配置项的行为是类似的,这里合并在一列中进行说明,global变量和session变量的行为差异较大,所以分开说明。
对比项 | 系统配置项 | 系统变量(global级别) | 系统变量(session级别) |
生效范围 | 分为集群级和租户级 | 租户 | 当前session |
生效方式 | 动态生效:edit_level 为 dynamic_effective 重启生效:edit_level 为 static_effective | 设置 global 级别的变量对当前 session 无效,需要建立新的 session 才会生效。 | 设置 session 级别的变量仅对当前 Session 有效,对其他 session 无效。 |
修改方式 | 通过启动参数修改: ./bin/observer -o xxx='xx'; 通过 SQL 语句修改: alter system set xxx='xx'; 通过持久化配置文件修改(不推荐) | 仅支持通过 SQL 语句修改,示例如下: set global xxx = xx; | 仅支持通过 SQL 语句修改,示例如下: set xxx = xx; |
持久化 | 持久化到内部表与配置文件,可以在 {install_path}/etc/observer.config.bin 与 {install_path}/etc/observer.config.bin.history 文件中找到配置项。 | 利用schema的机制持久化 | 不会持久化 |
生命周期 | 与observer进程生命周期相同 | 与租户生命周期相同 | 与session生命周期相同 |
查询方式 | 使用 show parameters 语句查询: show parameters like '%xxx%'; | 使用 show global variables 命令查询: show global variables like 'xxx'; 查询视图: select * from information_schema.global_variables where variable_name = 'xxx'; | 使用 show variables 命令查询: show variables like 'xxx'; 查询视图: select * from information_schema.session_variables where variable_name = 'xxx'; |
小结
本期博客介绍了系统变量的概念和用法,并与配置项进行了对比,至此就可以很容易地区分配置项和系统变量了。系统变量更加灵活,它可以控制当前会话的各种行为,并且不影响其他会话,跟配置项结合使用可以起到 1+1>2 的效果。
看到这里,不知道有没有同学已经跃跃欲试,也想尝试自己定义一个配置项或系统变量呢?在下一期博客中,将会介绍如何在 OceanBase 中新增配置项,包括配置项的代码实现也会有详细讲解,欢迎大家持续关注。
参考文档
- 配置项和系统变量概述
- 系统变量总览
- OB有问必答 | 参数和变量的区别是什么?
- 调整 OceanBase 配置项参数
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
OceanBase 配置项系统变量实现及应用详解(2):系统变量的定义及使用场景
在上一篇博客,配置项的定义及使用方法,详细阐述了配置项的概念及其基本应用方式,这些配置项能够调控集群或租户的行为方式。然而,在实际使用OceanBase的过程中,我们有时仅希望针对当前会话调整某些行为特性,…...
![](https://i-blog.csdnimg.cn/direct/56b5387290e246f0aeba9a3cc44479d6.png)
本地部署,去除动漫图像背景Anime Remove Background
目录 摘要 引言 深度学习在动漫角色中的应用 1.U-Net 2.Mask R-CNN 3.ISNet 模型 4.MODNet 模型 5.InSPyReNet 模型 本地部署 运行效果 测验结果 Tip: 摘要 动漫图像背景去除是一项在图像处理和计算机视觉领域具有重要应用的技术,广泛应用于…...
![](https://www.ngui.cc/images/no-images.jpg)
wireshark与tcpdump使用
wireshark 协议层过滤指令ipip.addr 1.1.1.1ip.src 1.1.1.1ip.dst 1.1.1.1tcptcp.port 80tcp.srcport 80tcp.dstport 80tcp.len > 0tcp.flags.fin 1...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
【密码学】密码学中的四种攻击方式和两种攻击手段
在密码学中,攻击方式通常指的是密码分析者试图破解加密信息或绕过安全机制的各种策略。根据密码分析者对明文、密文以及加密算法的知识程度,攻击可以分为以下四种基本类型: 一、四种攻击的定义 (1)唯密文攻击(COA, C…...
![](https://i-blog.csdnimg.cn/direct/9cb52a733ecd48a79fcb8b198fb6c1c8.png)
网络层的角色与重要性:互联网通信的关键
本章讨论网络层及网络互连问题,也就是讨论多个网络通过路由器互连成为一个互连网络的各种问题。在介绍网络层提供的两种不同服务后,我们开始讲解本章的核心内容——网际协议(IP),这是本书的一项重点内容。只有较深入地…...
![](https://www.ngui.cc/images/no-images.jpg)
Transformer模型:WordEmbedding实现
前言 最近在学Transformer,学了理论的部分之后就开始学代码的实现,这里是跟着b站的up主的视频记的笔记,视频链接:19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili 正文 首先导入所需要的包:…...
![](https://img-blog.csdnimg.cn/img_convert/6fa0c35f5cd9d626bc6519704be72bf0.webp?x-oss-process=image/format,png)
如何压缩pdf文件大小,怎么压缩pdf文件大小
在数字化时代,pdf文件因其稳定的格式和跨平台兼容性,成为了工作与学习中不可或缺的一部分。然而,随着pdf文件内容的丰富,pdf文件的体积也随之增大,给传输和存储带来了不少挑战。本文将深入探讨如何高效压缩pdf文件大小…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot集成Atomix快速入门Demo
1.什么是Atomix? Atomix是一个能用的Java框架,用来构建高可用的分布式系统。它是基于RAFT协议的实现,为用户提供了各种原子数据结构,比如map/set/integer等,这些数据结构都可以在整个集群中共享并保证一致性ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
Go语言map并发安全,互斥锁和读写锁谁更优?
并发编程是 Go 语言的一大特色,合理地使用锁对于保证数据一致性和提高程序性能至关重要。 在处理并发控制时,sync.Mutex(互斥锁)和 sync.RWMutex(读写锁)是两个常用的工具。理解它们各自的优劣及擅长的场景…...
![](https://i-blog.csdnimg.cn/direct/886907c971e6479e80fc943de5ebe632.png)
Java多线程性能调优
Synchronized同步锁优化方法 1.6之前比较重量级,1.6后经过优化性能大大提升 使用Synchronized实现同步锁住要是两种方式:方法、代码块。 1.代码块 Synchronized在修饰同步代码块时,是由 monitorenter和monitorexit指令来实现同步的。进入mo…...
![](https://i-blog.csdnimg.cn/direct/5f7443f1e3c14e45b602c854cb575545.png)
MacOS 通过Docker安装宝塔面板搭建PHP开发环境
1、docker拉取ubuntu系统 docker pull ubuntu2、运行容器 docker run -i -t -d --name bt -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 -p 6379:6379 --privilegedtrue -v /Users/oi/Sites:/www/wwwroot ubuntu-v 后的 /Users/oi/Sites 代表…...
![](https://i-blog.csdnimg.cn/direct/62146d4a2adb4deab3339d36a24cd8a4.png)
Unity发布webgl之后修改StreamingAssets 内的配置文件读取到的还是之前的配置文件的解决方案
问题描述 unity发布webgl之后,修改在StreamingAssets 中的配置信息,修改之后读取的还是之前的配置信息 读取配置文件的代码IEnumerator IE_WebGL_LoadWebSocketServerCopnfig(){var uri new System.Uri(Path.Combine(Application.streamingAssetsPath…...
![](https://img-blog.csdnimg.cn/img_convert/edaef2ba3c524942f5e5c8e1f7b4b724.jpeg)
离线语音识别芯片在智能生活中的应用
离线语音识别芯片,这一技术正逐渐渗透到我们日常生活的每一个角落,为众多产品带来前所未有的智能体验。它能够应用到多种产品中,包括但不限于: 1、智能音箱:语音识别芯片作为智能音箱的核心,使用户…...
![](https://i-blog.csdnimg.cn/direct/b8d594ff6b7a446d94f0f07fdbd21485.png)
替换:show-overflow-tooltip=“true“ ,使用插槽tooltip,达到内容可复制
原生的show-overflow-tooltip“true” 不能满足条件,使用插槽自定义编辑; 旧code <el-table-column prop"reason" label"原因" align"center" :show-overflow-tooltip"true" /> <el-table-column pro…...
![](https://i-blog.csdnimg.cn/direct/dc19216fa3934a7ea0b9eba9ae0dd5bc.png)
219.贪心算法:柠檬水找零(力扣)
代码解决 class Solution { public:bool lemonadeChange(vector<int>& bills) {int num50, num100; // 初始化5美元和10美元的计数器for(int i0; i < bills.size(); i) // 遍历所有账单{if(bills[i]5) // 如果账单是5美元{num5; // 增加5美元的计数continue; // …...
![](https://www.ngui.cc/images/no-images.jpg)
通过 Azure OpenAI 服务使用 GPT-35-Turbo and GPT-4(win版)
官方文档 Azure OpenAI 是微软提供的一项云服务,旨在将 OpenAI 的先进人工智能模型与 Azure 的基础设施和服务相结合。通过 Azure OpenAI,开发者和企业可以访问 OpenAI 的各种模型,如 GPT-3、Codex 和 DALL-E 等,并将其集成到自己…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL 面试真题(带答案)
MySQL 场景面试题 目录 场景1:用户注册和登录系统 1.1 数据库设计1.2 用户注册1.3 用户登录 场景2:订单管理系统 2.1 数据库设计2.2 创建订单2.3 查询订单 场景3:博客系统 3.1 数据库设计3.2 发布文章3.3 评论功能 场景1:用户…...
![](https://img-blog.csdnimg.cn/img_convert/4d3c927549f6a01b9855d6455f5eeee0.jpeg)
《A++ 敏捷开发》- 10 二八原则
团队成员协作,利用项目数据,分析根本原因,制定纠正措施,并立马尝试,判断是否有效,是改善的“基本功”。10-12章会探索里面的注意事项,13章会看两家公司的实施情况和常见问题。 如果已经获得高层…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot 框架知识汇总
1、什么是SpringBoot? 通过Spring Boot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行"它们。大多数Spring Boot应用程序需要最少的Spring配置,集成了大量常用的第三方库配置,使…...
![](https://img-blog.csdnimg.cn/img_convert/a9e424999a2355f7a86b089de5501adc.png)
国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)
windows系统也适用,该插件可同时支持windows和国产系统 在实际项目开发中,以下场景可能会用到Word局部编辑功能: 合同审批公文流转策划设计报告汇签单招投标(标书文件)其他,有模板且需要不同人员协作编辑…...
![](https://i-blog.csdnimg.cn/direct/706a89072afb4e2d84eb02469ae978aa.png)
Go:基本变量与数据类型
目录 前言 前期准备 Hello World! 一、基本变量 1.1 声明变量 1.2 初始化变量 1.3 变量声明到初始化的过程 1.4 变量值交换 1.5 匿名变量 1.6 变量的作用域 二、数据类型 1.1 整型 1.2 浮点型 1.3 字符串 1.4 布尔类型 1.5 数据类型判断 1.6 数据类型转换 1.…...
![](https://i-blog.csdnimg.cn/direct/ad16be0d99c74254b833f03e7f4f6edd.png)
计算器原生js
目录 1.HTML 2.CSS 2.JS 4.资源 5.运行截图 6.下载连接 7.注意事项 1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…...
![](https://img-blog.csdnimg.cn/img_convert/4d0f02fea7a3e042a4af614c9cd62eb7.png)
怎样将aac转换mp3格式?推荐四个aac转MP3的方法
怎样将aac转换mp3格式?当需要将aac格式音频转换为MP3格式时,有几种方法可以轻松实现这一目标。MP3是一种广泛支持的音频格式,几乎所有设备和平台都能播放MP3文件,包括各种音乐播放器、手机、平板电脑和汽车音响系统。而且它也提供…...
![](https://i-blog.csdnimg.cn/direct/9d623d21d89749379118fa73aac64911.png)
MongoDB - 查询操作符:比较查询、逻辑查询、元素查询、数组查询
文章目录 1. 构造数据2. MongoDB 比较查询操作符1. $eq 等于1.1 等于指定值1.2 嵌入式文档中的字段等于某个值1.3 数组元素等于某个值1.4 数组元素等于数组值 2. $ne 不等于3. $gt 大于3.1 匹配文档字段3.2 根据嵌入式文档字段执行更新 4. $gte 大于等于5. $lt 小于6. $lte 小于…...
![](https://i-blog.csdnimg.cn/direct/b2c1dc2a108d4d2685d0e220e388ce6e.png)
html5——CSS高级选择器
目录 属性选择器 E[att^"value"] E[att$"http"] E[att*"http"] 关系选择器 子代: 相邻兄弟: 普通兄弟: 结构伪类选择器 链接伪类选择器 伪元素选择器 CSS的继承与层叠 CSS的继承性 CSS的层叠性 …...
![](https://www.ngui.cc/images/no-images.jpg)
Python-数据爬取(爬虫)
~~~理性爬取~~~ 杜绝从入门到入狱 1.简要描述一下Python爬虫的工作原理,并介绍几个常用的Python爬虫库。 Python爬虫的工作原理 发送请求:爬虫向目标网站发送HTTP请求,通常使用GET请求来获取网页内容。解析响应:接收并解析HTTP响…...
![](https://i-blog.csdnimg.cn/direct/d8941d306b3b4cafbe93d9c37ad43478.png)
虚幻引擎ue5如何调节物体锚点
当发现锚点不在物体上时,如何调节瞄点在物体上。 步骤1:按住鼠标中键拖动锚点,在透视图中多次调节锚点位置。 步骤2:在物体上点击鼠标右键点击-》锚定--》“设置为枢轴偏移”即可。...
![](https://www.ngui.cc/images/no-images.jpg)
Xcode持续集成之道:自动化构建与部署的精粹
标题:Xcode持续集成之道:自动化构建与部署的精粹 在快节奏的软件开发中,持续集成(Continuous Integration, CI)是提升开发效率和软件质量的关键实践。Xcode作为苹果生态中的核心开发工具,提供了与多种持续…...
![](https://i-blog.csdnimg.cn/blog_migrate/91f00c13be86a5514f542efc7d47d593.png)
Java高频面试基础知识点整理13
干货分享,感谢您的阅读!背景高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…...
![](https://i-blog.csdnimg.cn/direct/6679ffe8c4284e14b02fd6f82cdef1d7.png)
css画半圆画圆弧
利用border-radius和border完成: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> <style> .semicircle {width: 100px;height: 50px;border-radius: 0 0 50px 50px;background:…...
充值网站制作/网站策划是干什么的
添加依赖虽然官网已经明确说明如何添加依赖, 我们还是做一下简单的介绍:step 1:配置工程下的build.gradle文件buildscript {repositories {mavenCentral()}dependencies {classpath com.neenbedankt.gradle.plugins:android-apt:1.8}}step 2:配置Module下的build.gradle文件app…...
![](/images/no-images.jpg)
wordpress换行符/网页设计制作网站素材
今天用了一下python发送带附件的邮件,结果弄了半天,一直报这个错误:smtplib.SMTPDataError: (554, b’DT:SPM 126 smtp10。 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipartsend_addr…...
![](/images/no-images.jpg)
真正永久免费空间/seo手机搜索快速排名
java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread JavaBridge. All WebView methods must be called on the same thread 之前的 android4.4版本的代码跑没有问题,到了5.0出了这个问题.查询百度.解决方法: //4.4之前版本调用函数 publ…...
![](/images/no-images.jpg)
重庆seo俱乐部/引擎优化
13.4 Spider 的用法在 Scrapy 中,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是在 Spider 中配置的。在前一节实例中,我们发现抓取逻辑也是在 Spider 中完成的。本节我们就来专门了解一下 Spider 的基本用法。1. Spider 运行流程在实现 Scrapy 爬…...
![](/images/no-images.jpg)
做网站放什么软件/百度搜索引擎网址格式
【题目】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆…...
![](https://img-my.csdn.net/uploads/201207/27/1343382152_4634.jpg)
做招聘的网站排名/全网投放广告的渠道有哪些
最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是Android上,试过几款手机,从低端…...