當前位置:首頁 » 數據倉庫 » 資料庫表空間的作用
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫表空間的作用

發布時間: 2022-10-01 22:08:42

『壹』 資料庫有哪些表空間各個表空間的作用是什麼

一、系統表空間
在 Mysql 數據目錄下有一個名為 ibdata1 的文件,可以保存一張或者多張表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
這個文件就是 MySQL 的系統表空間文件,默認為 1 個,可以有多個,只需要在配置文件 my.cnf 裡面這樣定義即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系統表空間不僅可以是文件系統組成的文件,也可以是非文件系統組成的磁碟塊,比如裸設備,定義也很簡單innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系統表空間里都有些啥內容?
具體內容包括:double writer buffer、 change buffer、數據字典(MySQL 8.0 之前)、表數據、表索引。
那 MySQL 為什麼現在主流版本默認都不是系統表空間?
究其原因,系統表空間有三個最大的缺點:原因 1:無法做到自動收縮磁碟空間,造成很大的空間浪費。即使它包含的表都被刪掉,這部分空間也不會自動釋放。
二、單表空間
單表空間不同於系統表空間,每個表空間和表是一一對應的關系,每張表都有自己的表空間。具體在磁碟上表現為後綴為 .ibd 的文件。比如表 t1,對應的表空間文件為 t1.ibd917107 96K -rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1.ibd

單表空間如何應用到具體的表呢?
有兩種方式:方式 1:在配置文件中開啟。在配置文件中開啟單表空間設置參數 innodb_filer_per_table,這樣默認對當前庫下所有表開啟單表空間。innodb_file_per_table=1另外也可以直接建表時指定單表空間mysql> create table t1 (id int, r1 char(36)) tablespace innodb_file_per_table;
Query OK, 0 rows affected (0.04 sec)
單表空間除了解決之前說的系統表空間的幾個缺點外,還有其他的優點,詳細如下:
1. truncate table 操作比其他的任何錶空間都快;
2. 可以把不同的表按照使用場景指定在不同的磁碟目錄;
比如日誌表放在慢點的磁碟,把需要經常隨機讀的表放在 SSD 上等。
mysql> create table ytt_dedicated (id int) data directory = '/var/lib/mysql-files';
Query OK, 0 rows affected (0.04 sec)3. 可以用 optimize table 來收縮或者重建經常增刪改查的表。一般過程是這樣的:建立和原來表一樣的表結構和數據文件,把真實數據復制到臨時文件,再刪掉原始表定義和數據文件,最後把臨時文件的名字改為和原始表一樣的。
三、通用表空間
通用表空間先是出現在 MySQL Cluster 里,也就是 NDB 引擎。從 MySQL 5.7 引入到 InnoDB 引擎。通用表空間和系統表空間一樣,也是共享表空間。每個表空間可以包含一張或者多張表,也就是說通用表空間和表之間是一對多的關系。

『貳』 什麼是表空間

表空間是資料庫的邏輯劃分,一個表空間只能屬於一個資料庫。所有的資料庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。

典型應用一:控制用戶所佔用的表空間配額。
在一些大型的資料庫應用中,我們需要控制某個用戶或者某一組用戶其所佔用的磁碟空間。這就好像在文件伺服器中,需要為每個用戶設置磁碟配額一樣,以防止硬碟空間耗竭。所以,在資料庫中,我們也需要限制用戶所可以使用的磁碟空間大小。為了達到這個目的,我們就可以通過表空間來實現。
我們可以在Oracle資料庫中,建立不同的表空間,為其設置最大的存儲容量,然後把用戶歸屬於這個表空間。如此的話,這個用戶的存儲容量,就受到這個表空間大小的限制。
典型應用二:控制資料庫所佔用的磁碟空間。
有時候,在Oracle資料庫伺服器中,可能運行不止一個服務。除了資料庫伺服器外,可能還有郵件伺服器等應用系統伺服器。為此,就需要先對Oracle資料庫的磁碟空間作個規劃,否則,當多個應用程序服務所佔用的磁碟空間都無限增加時,最後可能導致各個服務都因為硬碟空間的耗竭而停止。所以,在同一台伺服器上使用多個應用程序服務時,我們需要先為各個應用服務規劃分配磁碟空間,各服務的磁碟空間都不能夠超過我們分配的最大限額,或者超過後及時地提醒我們。只有這樣,才能夠避免因為磁碟空間的耗竭而導致各種應用服務的崩潰。
典型應用三:靈活放置表空間,提高資料庫的輸入輸出性能。
資料庫管理員還可以將不同類型的數據放置到不同的表空間中,這樣可以明顯提高資料庫輸入輸出性能,有利於數據的備份與恢復等管理工作。因為我們資料庫管理員在備份或者恢復數據的時候,可以按表空間來備份數據。如在設計一個大型的分銷系統後台資料庫的時候,我們可以按省份建立表空間。與浙江省相關的數據文件放置在浙江省的表空間中,北京發生業務記錄,則記錄在北京這個表空間中。如此,當浙江省的業務數據出現錯誤的時候,則直接還原浙江省的表空間即可。很明顯,這樣設計,當某個表空間中的數據出現錯誤需要恢復的時候,可以避免對其他表空間的影響。
另外,還可以對表空間進行獨立備份。當資料庫容量比較大的時候,若一下子對整個資料庫進行備份,顯然會佔用比較多的時間。雖然說Oracle資料庫支持熱備份,但是在備份期間,會佔用比較多的系統資源,從而造成資料庫性能的下降。為此,當資料庫容量比較大的時候,我們就需要進行設置多個表空間,然後規劃各個表空間的備份時間,從而可以提高整個資料庫的備份效率,降低備份對於資料庫正常運行的影響。
典型應用四:大表的排序操作。
我們都知道,當表中的記錄比較多的時候,對他們進行查詢,速度會比較慢。第一次查詢成功後,若再對其進行第二次重新排序,仍然需要這么多的時間。為此,我們在資料庫設計的時候,針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高資料庫的性能。
典型應用五:日誌文件與數據文件分開放,提高資料庫安全性。
默認情況下,日誌文件與數據文件存放在同一表空間。但是,這對於資料庫安全方面來說,不是很好。所以,我們在資料庫設計的過程中,往往喜歡把日誌文件,特別是重做日誌文件,放在一個獨立的表空間中,然後把它存放在另外一塊硬碟上。如此的話,當存放數據文件的硬碟出現故障時,能夠馬上通過存放在另一個表空間的重做日誌文件,對資料庫進行修復,以減少企業因為數據丟失所帶來的損失。
當然,表空間的優勢還不僅僅這些,企業對於資料庫的性能要求越高,或者資料庫容量越大,則表空間的優勢就會越大。

在資料庫設計的時候,我們建議資料庫管理員按如下順序設置表空間。
第一步:建立表空間。
在設計資料庫的時候,首先需要設計表空間。我們需要考慮,是只建立一個表空間呢,還是需要建立多個表空間,以及各個表空間的存放位置、磁碟限額等等。
到底設計多少個表空間合理,沒有統一的說法,這主要根據企業的實際需求去判斷。如企業需要對用戶進行磁碟限額控制的,則就需要根據用戶的數量來設置表空間。當企業的數據容量比較大,而其又對資料庫的性能有比較高的要求時,就需要根據不同類型的數據,設置不同的表空間,以提高其輸入輸出性能。
第二步:建立用戶,並制定用戶的默認表空間。
在建立用戶的時候,我們建議資料庫管理員要指定用戶的默認表空間。因為我們在利用CREATE語句創建資料庫對象,如資料庫表的時候,其默認是存儲在資料庫的當前默認空間。若不指定用戶默認表空間的話,則用戶每次創建資料庫對象的時候,都要指定表空間,顯然,這不是很合理。
另外要注意,不同的表空間有不同的許可權控制。用戶對於表空間A具有完全控制許可權,可能對於表空間B就只有查詢許可權,甚至連連接的許可權的都沒有。所以,合理為用戶配置表空間的訪問許可權,也是提高資料庫安全性的一個方法。

『叄』 資料庫有哪些表空間各個表空間的作用是什麼

一、系統表空間
在 MySQL 數據目錄下有一個名為 ibdata1 的文件,可以保存一張或者多張表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
這個文件就是 MySQL 的系統表空間文件,默認為 1 個,可以有多個,只需要在配置文件 my.cnf 裡面這樣定義即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系統表空間不僅可以是文件系統組成的文件,也可以是非文件系統組成的磁碟塊,比如裸設備,定義也很簡單innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系統表空間里都有些啥內容?
具體內容包括:double writer buffer、 change buffer、數據字典(MySQL 8.0 之前)、表數據、表索引。
那 MySQL 為什麼現在主流版本默認都不是系統表空間?
究其原因,系統表空間有三個最大的缺點:原因 1:無法做到自動收縮磁碟空間,造成很大的空間浪費。即使它包含的表都被刪掉,這部分空間也不會自動釋放。

『肆』 oracle為什麼要創建一個表空間和臨時表空間

臨時表空間用來進行一些運算和索引創建等,多數使用完會自動清理,而表空間是正常數據物理存儲的永久空間,兩者的用途不同,為了更好的管理所以區分開來創建。

臨時表空間主要用途是在資料庫進行CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等操作時用到,當運算完成之後系統會自動清理。

永久表空間則是真正用來進行正常數據存儲的實際物理存儲區域。

(4)資料庫表空間的作用擴展閱讀

oracle表空間的類型:

1、永久性表空間:一般保存表、視圖、過程和索引等的數據。

2、臨時性表空間:只用於保存系統中短期活動的數據。

3、撤銷表空間:用來幫助回退未提交的事務數據。

Oracle表空間的作用:

1、決定資料庫實體的空間分配;

2、設置資料庫用戶的空間份額;

3、控制資料庫部分數據的可用性;

4、分布數據於不同的設備之間以改善性能;

5、備份和恢復數據。

『伍』 oracle為什麼要創建表空間表空間該如何創建

用來存放數據。創建一個單獨的文件夾給你來專門放oracle學習資料,這樣你在查找時就可以只搜索這個文件夾,而不是整個硬碟搜索,從而提高效率。

表空間:此空間是用來進行數據存儲的(表、function、存儲過程等),所以是實際物理存儲區域。

Oracle Database

又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。

可以說Oracle資料庫系統是世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小微機環境。它是一種高效率的、可靠性好的、適應高吞吐量的資料庫方案。

『陸』 oracle中表空間與臨時表空間是什麼意思有什麼作用

表空間是資料庫的邏輯劃分,一個表空間只能屬於一個資料庫。所有的資料庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。Oracle臨時表空間主要用來做查詢和存放一些緩沖區數據。臨時表空間,可自動釋放;而表空間中存儲表數據、函數、過程、序列等。是隨資料庫永久存在的。

『柒』 資料庫中的表空間有什麼用途

就相當於sqlserver里的資料庫 賬號都是在表空間里區分的

『捌』 Oracle中表空間的概念及作用

與數據文件一一對應,將數據存放在特定的物理磁碟空間,作用就是當磁碟部分損壞時可以還原非損壞部分的數據

『玖』 資料庫有哪些表空間各個表空間的作用是什麼

一、系統表空間
在 MySQL 數據目錄下有一個名為 ibdata1 的文件,可以保存一張或者多張表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
這個文件就是 MySQL 的系統表空間文件,默認為 1 個,可以有多個,只需要在配置文件 my.cnf 裡面這樣定義即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系統表空間不僅可以是文件系統組成的文件,也可以是非文件系統組成的磁碟塊,比如裸設備,定義也很簡單innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系統表空間里都有些啥內容?
具體內容包括:double writer buffer、 change buffer、數據字典(MySQL 8.0 之前)、表數據、表索引。
那 MySQL 為什麼現在主流版本默認都不是系統表空間?
究其原因,系統表空間有三個最大的缺點:原因 1:無法做到自動收縮磁碟空間,造成很大的空間浪費。即使它包含的表都被刪掉,這部分空間也不會自動釋放。