在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL數據庫中通用表空間詳解

OSC開源社區 ? 來源:OSCHINA 社區 ? 2024-01-10 09:33 ? 次閱讀

作者:愛可生開源社區

在 MySQL 數據庫中有效管理存儲和性能至關重要,通用表空間為實現這一目標提供了靈活性。本文討論通用表空間并探討其功能、優點和實際用法,并附有說明性示例。

什么是通用表空間?

與默認保存系統表的單個系統表空間不同,通用表空間是用戶定義的多個 InnoDB 表的存儲容器。與默認設置相比,它們在數據組織和性能優化方面提供了靈活性。

主要特征

多表存儲:與將每個表存儲在單獨的文件中的獨立表空間不同,通用表空間可以容納大量的表,從而提高存儲效率。

靈活的位置:數據文件可以駐留在 MySQL 的 data 目錄或獨立位置,從而可以更好地控制存儲管理和性能調整。

支持所有表格式:通用表空間可容納所有 InnoDB 表格式,包括冗余、緊湊、動態和壓縮行格式,為特定需求提供靈活性。

內存優化:與每個表多個文件的表空間相比,共享表空間元數據減少了內存消耗。

使用通用表空間的好處

提高性能:有策略地將數據文件放置在更快的磁盤上或將表分布在多個磁盤上可以顯著提高性能。

RAID 和 DRBD 集成:數據文件可以放置在 RAID 或 DRBD 卷上,以增強數據冗余和災難恢復。

加密支持:MySQL 支持通用表空間加密,增強數據的安全性。

方便的表管理:通用表空間允許您將多個表分組在一起,從而更輕松地管理和組織數據庫對象。

創建和管理通用表空間

可以使用CREATE TABLESPACE語句創建通用表空間,并指定數據文件位置和引擎選項。 創建通用表空間涉及幾個簡單的步驟。下面的CREATE TABLESPACE語句使用指定的數據文件general_tablespace.ibd創建一個名為my_general_tablespace的新表空間。此外,它還使用選項ENCRYPTION='Y'啟用表空間加密,并使用FILE_BLOCK_SIZE = 16384選項設置文件塊大小。 讓我們創建一個名為my_general_tablespace的通用表空間:

mysql> CREATE TABLESPACE my_general_tablespace
   -> ADD DATAFILE 'general_tablespace.ibd'
   -> ENCRYPTION='Y'
   -> FILE_BLOCK_SIZE = 16384;
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql>


mysql> pager grep -i keyring_file;
PAGER set to 'grep -i keyring_file'

mysql> SHOW PLUGINS;
50 rows in set (0.00 sec)

mysql> INSTALL PLUGIN keyring_file SONAME 'keyring_file.so';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW PLUGINS;
| keyring_file                     | ACTIVE   | KEYRING            | keyring_file.so | GPL     |
50 rows in set (0.00 sec)

mysql> CREATE TABLESPACE my_general_tablespace
   -> ADD DATAFILE 'general_tablespace.ibd'
   -> ENCRYPTION='Y'
   -> FILE_BLOCK_SIZE = 16384;
Query OK, 0 rows affected (0.01 sec)

mysql>

現在,讓我們看看如何在數據目錄之外創建通用表空間。

root@mysql8:/var/lib# mkdir mysql_user_defined
root@mysql8:/var/lib# chown -R mysql.mysql mysql_user_defined
root@mysql8:/var/lib#

mysql> CREATE TABLESPACE user_defined_general_tablespace
    -> ADD DATAFILE '/var/lib/var/lib/mysql_user_defined/user_defined_general_tablespace.ibd'
    -> Engine=InnoDB;
ERROR 3121 (HY000): The DATAFILE location must be in a known directory.
錯誤 3121 (HY000):數據文件位置必須位于已知目錄中。提示 MySQL 無法在指定目錄中創建表空間,因為該目錄未配置為數據文件的有效位置。 要解決此錯誤,請按照下列步驟操作:使用SHOW VARIABLES LIKE 'innodb_directories'檢查配置的目錄;如果/var/lib/mysql_user_define未列出,請繼續添加該目錄。
mysql> SHOW VARIABLES LIKE 'innodb_directories';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_directories |       |
+--------------------+-------+
1 row in set (0.00 sec)

root@mysql8:/etc/mysql/mysql.conf.d# grep -i innodb_directories mysqld.cnf
innodb_directories=/var/lib/mysql_user_defined
root@mysql8:/etc/mysql/mysql.conf.d# service mysql restart
root@mysql8:/etc/mysql/mysql.conf.d

mysql> CREATE TABLESPACE user_defined_general_tablespace
    -> ADD DATAFILE '/var/lib/mysql_user_defined/user_defined_general_tablespace.ibd'
    -> Engine=InnoDB;
Query OK, 0 rows affected (0.02 sec)

將表分配給通用表空間

創建 MySQL 通用表空間后,您可以在表創建過程中或通過更改現有表為其分配表。以下是在my_general_tablespace中創建表的示例:

mysql> CREATE TABLE my_table (
    ->     id INT PRIMARY KEY,
    ->     name VARCHAR(50)
    -> ) TABLESPACE = my_general_tablespace;
ERROR 3825 (HY000): Request to create 'unencrypted' table while using an 'encrypted' tablespace.
mysql>

mysql> CREATE TABLE my_table (
    ->     id INT PRIMARY KEY,
    ->     name VARCHAR(50)
    -> ) TABLESPACE = my_general_tablespace
    ->   ENCRYPTION='Y';
Query OK, 0 rows affected (0.02 sec)
我們創建的user_define_general_tablespace未加密,允許我們在其中創建未加密的表。
mysql> CREATE TABLE my_unencrypted_table(
    -> id INT PRIMARY KEY,
    -> name VARCHAR(50)
    -> ) TABLESPACE = user_defined_general_tablespace;
Query OK, 0 rows affected (0.01 sec)

將表遷移到通用表空間

如果您有現有表并希望將它們移動到通用表空間,則可以使用ALTER TABLE語句。例如:

mysql> show create table authorsG
*************************** 1. row ***************************
       Table: authors
Create Table: CREATE TABLE `authors` (
  `id` int DEFAULT NULL,
  `first_name` varchar(50) DEFAULT NULL,
  `last_name` varchar(50) DEFAULT NULL,
  `age` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

mysql> ALTER TABLE authors
    -> TABLESPACE = my_general_tablespace;
ERROR 3825 (HY000): Request to create 'unencrypted' table while using an 'encrypted' tablespace.

mysql> ALTER TABLE authors ENCRYPTION='Y';
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE authors
    -> TABLESPACE = my_general_tablespace;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql>
要將表從通用表空間轉移到獨立表空間,請指定“innodb_file_per_table”作為目標表空間名稱。
mysql> ALTER TABLE authors
    -> TABLESPACE = innodb_file_per_table ENCRYPTION = 'Y';
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

監控

該查詢檢索指定 MySQL 表空間的信息,包括表空間名稱、文件名、存儲引擎、狀態和可用的空閑數據空間。

mysql> SELECT TABLESPACE_NAME, FILE_NAME, ENGINE, STATUS, DATA_FREE FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME IN ('my_general_tablespace',
'user_defined_general_tablespace')G
*************************** 1. row ***************************
TABLESPACE_NAME: my_general_tablespace
      FILE_NAME: ./general_tablespace.ibd
         ENGINE: InnoDB
         STATUS: NORMAL
      DATA_FREE: 0
*************************** 2. row ***************************
TABLESPACE_NAME: user_defined_general_tablespace
      FILE_NAME: /var/lib/mysql_user_defined/user_defined_general_tablespace.ibd
         ENGINE: InnoDB
         STATUS: NORMAL
      DATA_FREE: 0
2 rows in set (0.00 sec)
以下查詢有助于查找有關屬于指定表空間的 InnoDB 表的信息。
mysql> SELECT NAME, SPACE_TYPE, TABLESPACE_NAME from INFORMATION_SCHEMA.INNODB_TABLES JOIN INFORMATION_SCHEMA.FILES ON FILE_ID=SPACE WHERE TABLESPACE_NAME='my_general_tablespace'G
*************************** 1. row ***************************
           NAME: mytestdb/my_table
     SPACE_TYPE: General
TABLESPACE_NAME: my_general_tablespace
*************************** 2. row ***************************
           NAME: mytestdb/books
     SPACE_TYPE: General
TABLESPACE_NAME: my_general_tablespace
2 rows in set (0.01 sec)

要檢索特定 InnoDB 表的 TABLESPACE 信息,請使用以下查詢。

mysql> SELECT NAME, SPACE_TYPE, TABLESPACE_NAME from INFORMATION_SCHEMA.INNODB_TABLES JOIN INFORMATION_SCHEMA.FILES ON FILE_ID=SPACE WHERE NAME='mytestdb/my_table'G
*************************** 1. row ***************************
           NAME: mytestdb/my_table
     SPACE_TYPE: General
TABLESPACE_NAME: my_general_tablespace
1 row in set (0.00 sec)

實際使用示例:

將頻繁訪問和很少使用的表進行分離:將頻繁訪問的表放置在 SSD 上的通用表空間中,以獲得卓越的性能,同時將很少使用的表放置在基于 HDD 的通用表空間中,以優化存儲成本。

平衡 I/O 負載:將表分布在位于不同磁盤上的多個通用表空間中,以避免 I/O 瓶頸并提高查詢執行速度。

關鍵數據的專用存儲:為關鍵表創建具有 RAID 或 DRBD 配置的獨立通用表空間,確保最大程度的冗余并防止硬件故障。

結論

MySQL 通用表空間提供了強大而靈活的存儲解決方案,用于優化數據組織和性能,了解其功能并有效部署它們可以顯著改善您的數據庫管理工作。為了最大限度地發揮其優勢,請記住在實施通用表空間之前仔細考慮您的特定需求和工作負載特征。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3852

    瀏覽量

    64724
  • 開源
    +關注

    關注

    3

    文章

    3412

    瀏覽量

    42737
  • MySQL
    +關注

    關注

    1

    文章

    831

    瀏覽量

    26760

原文標題:MySQL通用表空間的這幾個選項你會用么?

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在Rust連接和使用MySQL數據庫

    MySQL是一個廣泛使用的關系型數據庫,Rust作為一門相對較新的系統級編程語言,具有C語言般的高性能、安全、并發等特性,因此與MySQL一起使用是一種非常有趣的選擇。在本教程,我們
    的頭像 發表于 09-30 17:05 ?1782次閱讀

    MySQL數據庫如何安裝和使用說明

    MySQL數據庫開發 基礎概念 1.數據:描述事物特征的符號,屬性 2.數據庫的概念:管理計算機
    的頭像 發表于 02-13 16:13 ?2851次閱讀

    MySQL端口可以從MySQL數據庫存儲和檢索數據

    MySQL端口可以從MySQL數據庫存儲和檢索數據。 概覽 建立連接后,端口讀取數據庫
    的頭像 發表于 02-15 14:07 ?1714次閱讀

    華為云數據庫-RDS for MySQL數據庫

    (for MySQL)為輔。 MySQL數據庫是全球最受歡迎的一種數據庫,它是屬于 Oracle旗下的一款產品,MySQL是一種關系型
    的頭像 發表于 10-27 11:06 ?1578次閱讀

    MySQL數據庫服務器、數據庫之間是什么關系

    數據庫服務器:MySQL安裝后,會成為一個windows服務,這個windows服務可以看做是數據庫服務器。用CMD登錄MySQL,此時CMD就是一個客戶端。
    的頭像 發表于 01-31 14:59 ?1286次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數據庫</b>服務器、<b class='flag-5'>數據庫</b>和<b class='flag-5'>表</b>之間是什么關系

    MySQL數據庫管理與應用

    討論MySQL數據庫的管理和應用。 管理MySQL數據庫 在管理MySQL數據庫之前,我們需要了
    的頭像 發表于 08-28 17:15 ?1048次閱讀

    數據庫數據恢復—MySQL數據庫誤刪除記錄的數據恢復案例

    數據庫數據恢復環境: 一臺本地windows sever操作系統服務器,服務器上部署mysql數據庫單實例,引擎類型為innodb,
    的頭像 發表于 11-09 15:16 ?1421次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—<b class='flag-5'>MySQL</b><b class='flag-5'>數據庫</b><b class='flag-5'>表</b>誤刪除記錄的<b class='flag-5'>數據</b>恢復案例

    mysql是一個什么類型的數據庫

    強、易于使用和管理。在本文中,我們將詳盡、詳實、細致地介紹MySQL的功能、優勢、架構、語法等方面。 一、MySQL的功能: 數據庫管理:MySQL具備創建和管理
    的頭像 發表于 11-16 14:43 ?1899次閱讀

    數據庫mysql基本增刪改查

    的基本增刪改查操作。 一、增加數據(INSERT) 在MySQL,可以使用INSERT語句來向數據庫添加
    的頭像 發表于 11-16 16:35 ?1592次閱讀

    MySQL數據庫基礎知識

    的基礎知識,包括其架構、數據類型、操作、查詢語句和數據導入導出等方面。 MySQL 數據庫架構 MyS
    的頭像 發表于 11-21 11:09 ?1023次閱讀

    mysql數據庫基礎命令

    MySQL是一個流行的關系型數據庫管理系統,經常用于存儲、管理和操作數據。在本文中,我們將詳細介紹MySQL的基礎命令,并提供與每個命令相關的詳細解釋。 登錄
    的頭像 發表于 12-06 10:56 ?651次閱讀

    數據庫數據恢復—未開啟binlog的Mysql數據庫數據恢復案例

    mysql數據庫數據恢復環境: 本地服務器,windows server操作系統 ,部署有mysql單實例,數據庫引擎類型為innodb,
    的頭像 發表于 12-08 14:18 ?1225次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—未開啟binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復案例

    mysql怎么新建一個數據庫

    mysql怎么新建一個數據庫 如何新建一個數據庫MySQL 創建一個數據庫
    的頭像 發表于 12-28 10:01 ?975次閱讀

    數據庫數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、
    的頭像 發表于 12-16 11:05 ?229次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—<b class='flag-5'>Mysql</b><b class='flag-5'>數據庫</b>表記錄丟失的<b class='flag-5'>數據</b>恢復流程

    MySQL數據庫的安裝

    MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發表于 01-14 11:25 ?142次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數據庫</b>的安裝
    主站蜘蛛池模板: 国产精品成人va在线观看入口 | 长腿丝袜美女被啪啪 | 色综合狠狠操 | 手机看片日韩国产 | 色综合久久久久久久久久久 | 色在线视频播放 | 成人午夜在线观看国产 | 插插插操操操 | 欧美视频一区在线观看 | 91大神在线观看精品一区 | 傲视影院午夜毛片 | 欧美人与动欧交视频 | 欧美作爱福利免费观看视频 | 好大好硬好爽免费视频 | 污污的黄色小说 | 婷婷丁香亚洲 | 国产亚洲精品仙踪林在线播放 | 精品国内一区二区三区免费视频 | 亚洲性色成人 | 成年美女黄网站色大免费视频 | 日本免费精品视频 | 夜色福利 | 性欧美性free| 超黄视频网站 | 欧美在线视频7777kkkk | 高清一区高清二区视频 | 午夜色网| 夜夜超b天天 | 美女性视频网站 | 日韩精品一卡二卡三卡四卡2021 | 视频一区二区不卡 | 美女被强插 | 久草视频资源在线 | 日本高清在线3344www | 色妞妞网| 最刺激黄a大片免费观看 | 丁香五婷婷 | 久久99爰这里有精品国产 | 亚洲狠狠婷婷综合久久久久图片 | 中文字幕一区二区三区四区 | 九九热在线免费观看 |