OceanBase數據字典視圖學習與總結(MySQL模式)

来源:https://www.cnblogs.com/coygfly/archive/2023/08/03/17596266.html
-Advertisement-
Play Games

![file](https://img2023.cnblogs.com/other/2685289/202308/2685289-20230803180034435-79319118.png) ## 導讀 國內某頭部券商是國內排名前三的全國性大型綜合證券公司。作為證券行業領頭羊之一,該券商一直高度重 ...


OceanBase 資料庫的系統視圖分為字典視圖和性能視圖。其中字典視圖就是描述數據字典的視圖,OceanBase 資料庫的字典視圖包含 information_schema.* 視圖、oceanbase.CDB_* 視圖、oceanbase.DBA_*視圖以及 mysql.* 視圖。本文所涉及的版本主要為OceanBase4.1.0。

information_schema.* 視圖

該類視圖提供對 MySQL 租戶中資料庫元數據(包括:資料庫或表的名稱、列的數據類型或訪問許可權)的訪問。稱為數據字典或系統目錄。這個視圖類似MySQL資料庫的information_schema,我們在MySQL中經常使用processlist、tables等查看當前連接,資料庫表信息等,在oceanbase資料庫中同樣提供了這樣的介面,這對MySQL DBA是比較方便的。可以看到,processlist和tables的表結構和MySQL里的也是如出一轍。

MySQL [information_schema]> select * from processlist limit 3;
+------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
| ID         | USER | HOST             | DB                 | COMMAND | TIME  | STATE  | INFO                              |
+------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
| 1111111570 | root | 10.10.97.94:49426 | bghg               | Sleep   |  1430 | SLEEP  | NULL                              |
| 1111119446 | root | 10.10.97.94:6786  | information_schema | Query   |     0 | ACTIVE | select * from processlist limit 3 |
| 1111111020 | root | 10.10.97.84:59088 | oceanbase          | Sleep   | 24743 | SLEEP  | NULL                              |
+------------+------+------------------+--------------------+---------+-------+--------+-----------------------------------+
3 rows in set (0.01 sec)
MySQL [information_schema]> desc tables;
+-----------------+--------------------+------+-----+---------+-------+
| Field           | Type               | Null | Key | Default | Extra |
+-----------------+--------------------+------+-----+---------+-------+
| TABLE_CATALOG   | varchar(3)         | NO   |     |         |       |
| TABLE_SCHEMA    | varchar(128)       | NO   |     |         |       |
| TABLE_NAME      | varchar(256)       | NO   |     |         |       |
| TABLE_TYPE      | varchar(12)        | NO   |     |         |       |
| ENGINE          | null               | NO   |     |         |       |
| VERSION         | null               | NO   |     |         |       |
| ROW_FORMAT      | null               | NO   |     |         |       |
| TABLE_ROWS      | decimal(20,0)      | NO   |     |         |       |
| AVG_ROW_LENGTH  | decimal(24,4)      | NO   |     |         |       |
| DATA_LENGTH     | decimal(20,0)      | NO   |     |         |       |
| MAX_DATA_LENGTH | null               | NO   |     |         |       |
| INDEX_LENGTH    | null               | NO   |     |         |       |
| DATA_FREE       | null               | NO   |     |         |       |
| AUTO_INCREMENT  | null               | NO   |     |         |       |
| CREATE_TIME     | timestamp(6)       | NO   |     | NULL    |       |
| UPDATE_TIME     | timestamp(6)       | NO   |     | NULL    |       |
| CHECK_TIME      | null               | NO   |     |         |       |
| TABLE_COLLATION | varchar(128)       | NO   |     |         |       |
| CHECKSUM        | bigint(0) unsigned | NO   |     |         |       |
| CREATE_OPTIONS  | null               | NO   |     |         |       |
| TABLE_COMMENT   | varchar(4096)      | NO   |     |         |       |
+-----------------+--------------------+------+-----+---------+-------+
21 rows in set (0.02 sec)

mysql.* 視圖

這類視圖其實也是放資料庫裡面元數據的的數據字典表,和MySQL類似,用的比較多的是mysql.user表,用來查資料庫里的用戶信息。

oceanbase.CDB_* 視圖

從命名為CDB可以看出,這個視圖是SYS租戶下才能看到,從整個集群層面,獲取全部租戶的一些數據字典信息。oceanbase.CDB_TABLES展示了所有租戶表的信息,oceanbase.CDB_OB_DATABASES展示所有租戶的資料庫元信息,oceanbase.CDB_TAB_PARTITIONS展示所有租戶的分區表的一級分區信息。

oceanbase.DBA_*視圖

該類視圖可用於獲取整個資料庫中的所有相關信息。該類視圖需要使用管理員許可權訪問。對應於oceanbase.CDB_* 視圖,oceanbase.DBA_*視圖更多的是用來描述租戶級別的數據字典信息。比如oceanbase.DBA_OB_DATABASES展示的是租戶級別的資料庫元信息,對應於oceanbase.CDB_OB_DATABASES。oceanbase.DBA_TAB_PARTITIONS描述的是在當前租戶下當前用戶可訪問的多級分區信息、分區存儲參數和分區統計信息。

此外,也有部分oceanbase.DBA_*視圖只能在SYS租戶下才能訪問到,這些主要都是集群層面的監控。oceanbase.DBA_OB_TENANTS,展示所有租戶的基本信息(普通用戶訪問時只展示本租戶的信息)。oceanbase.DBA_OB_SERVERS展示所有 OBServer 節點的信息,oceanbase.DBA_OB_ZONES展示所有 Zone 的信息。

值得註意的是oceanbase.DBA_*視圖和大部分oceanbase.CDB_* 視圖在4.0.0以下的版本是沒有的。值得一提的是,3.x.x版本的oceanbase提供了很多__all_*視圖,__all_server和oceanbase.DBA_OB_SERVERS功能類似,__all_telnet和oceanbase.DBA_OB_TENANTS功能類似。但是在OceanBase的官方文檔中,並沒有找到對__all_*視圖的相關描述,白鱔老師也在他的文章中吐槽過ob的元數據藏得太深:https://mp.weixin.qq.com/s/gyxABzj7OY8o5vH-Kf0t2w 。這也是ob後續需要優化的一個方向吧。

obclient> desc __all_server;
+-----------------------+--------------+------+-----+----------------------+--------------------------------+
| Field                 | Type         | Null | Key | Default              | Extra                          |
+-----------------------+--------------+------+-----+----------------------+--------------------------------+
| gmt_create            | timestamp(6) | YES  |     | CURRENT_TIMESTAMP(6) |                                |
| gmt_modified          | timestamp(6) | YES  |     | CURRENT_TIMESTAMP(6) | ON UPDATE CURRENT_TIMESTAMP(6) |
| svr_ip                | varchar(46)  | NO   | PRI | NULL                 |                                |
| svr_port              | bigint(20)   | NO   | PRI | NULL                 |                                |
| id                    | bigint(20)   | NO   |     | NULL                 |                                |
| zone                  | varchar(128) | NO   |     | NULL                 |                                |
| inner_port            | bigint(20)   | NO   |     | NULL                 |                                |
| with_rootserver       | bigint(20)   | NO   |     | NULL                 |                                |
| status                | varchar(64)  | NO   |     | NULL                 |                                |
| block_migrate_in_time | bigint(20)   | NO   |     | NULL                 |                                |
| build_version         | varchar(256) | NO   |     | NULL                 |                                |
| stop_time             | bigint(20)   | NO   |     | 0                    |                                |
| start_service_time    | bigint(20)   | NO   |     | NULL                 |                                |
| first_sessid          | bigint(20)   | NO   |     | 0                    |                                |
| with_partition        | bigint(20)   | NO   |     | 0                    |                                |
| last_offline_time     | bigint(20)   | NO   |     | 0                    |                                |
+-----------------------+--------------+------+-----+----------------------+--------------------------------+
16 rows in set (0.01 sec)
obclient> select * from __all_tenant limit 1 \G
*************************** 1. row ***************************
                 gmt_create: 2022-07-19 10:57:45.156936
               gmt_modified: 2022-07-19 10:57:45.156936
                  tenant_id: 1
                tenant_name: sys
                replica_num: -1
                  zone_list: zone1;zone2;zone3
               primary_zone: zone1;zone2,zone3
                     locked: 0
             collation_type: 0
                       info: system tenant
                  read_only: 0
      rewrite_merge_version: 0
                   locality: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
        logonly_replica_num: 0
          previous_locality: 
     storage_format_version: 0
storage_format_work_version: 0
      default_tablegroup_id: -1
         compatibility_mode: 0
           drop_tenant_time: -1
                     status: TENANT_STATUS_NORMAL
              in_recyclebin: 0
1 row in set (0.00 sec)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # Unity IPostprocessBuildWithReport Unity IPostprocessBuildWithReport是Unity引擎中的一個非常有用的功能,它可以讓開發者在構建項目後自動執行一些操作,並且可以獲取構建報告。這個功能可以幫助開發提高工作效率,減少手動操作的時間和錯 ...
  • 個人博客 前端:https://lujiesheng.cn 個人博客 後端:https://api.lujiesheng.cn 個人博客 運維:https://portainer.lujiesheng.cn # 1. 伺服器準備 我採用的是 騰訊雲輕量應用伺服器(2C 4G 8M 80G),配置如下 ...
  • 我的一位朋友前陣子遇到一個問題,問題的核心就是try……catch……finally中catch和finally代碼塊到底哪個先執。這個問題看起來很簡單,當然是“catch先執行、finally後執行”了?真的是這樣嗎? 有下麵一段C#代碼,請問這段代碼的執行結果是什麼? public static ...
  • ### 用Xshell 遠程連接虛擬機 如果按[前面博客](https://www.cnblogs.com/AndrewNotes/p/17589321.html)裝好虛擬機,**會發現剛裝好的虛擬機直接連Xshell連不上,宿主機也ping不通虛擬機,這就需要修改VMware的預設網路配置** * ...
  • ### Linux簡介 ```bash # Linux是什麼? 與大家熟知的 Windows 操作系統軟體一樣,Linux 也是一個操作系統軟體。但是與Windows 不同的是,Linux 是一套開放源代碼程式的、並且可以自由傳播的類 Unix操作系統軟體。其在設計之初,就是基於 Intel x86 ...
  • ## 許可權機制和性能指標 前面我們學完了`操作文件`和`用戶`相關知識,本篇學習`許可權`和`性能`相關知識。 ### 文件的屬性看起 看 linux 的許可權,先從文件的屬性看起 ls -l 加 `-d` 是只看這個文件夾: ```javascript pjl@pjl-pc:~$ sudo ls -l ...
  • module_init是linux內核提供的一個巨集, 可以用來在編寫內核模塊時註冊一個初始化函數, 當模塊被載入的時候, 內核負責執行這個初始化函數. 在編寫設備驅動程式時, 使用這個巨集看起來理所應當, 沒什麼特別的, 但畢竟我還是一個有點追求的程式員嘛:P, 這篇文章是我學習module_init... ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230803122150238-1461011617.png) # 1. 問題4 ## 1.1. 最多選修兩門課程的學生,沒有選修任何課程的學生應該被排除在外 ## 1.2.  ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...