DB2 - 表空间
Db2 - 表空间
Section titled “Db2 - 表空间”本章解释了表空间,它是Db2中连接逻辑数据库对象和物理磁盘存储之间的基本存储管理结构。
表空间是数据库内的一个逻辑存储层,包含表、索引和大对象(LOBs)等对象。它充当一个组织容器,将相关数据分组在一起。表空间的主要功能是将这些逻辑数据库对象映射到物理存储单元,即容器。
使用表空间的好处
Section titled “使用表空间的好处”- 性能调优:您可以将不同类型的数据(例如,表与索引)或具有不同访问模式的数据(例如,OLTP与数据仓库)放在不同的表空间中。然后可以将它们分配给不同的缓冲池或物理磁盘,以优化I/O性能。
- 存储管理:表空间提供了一种灵活的方式来管理数据在文件系统上的存储方式和位置。
- 备份与恢复:您可以备份和恢复单个表空间,这对于非常大的数据库(VLDBs)来说,比操作整个数据库快得多。
存储管理:现代方法
Section titled “存储管理:现代方法”自动存储表空间(最佳实践)
Section titled “自动存储表空间(最佳实践)”自动存储是Db2中管理表空间的现代、默认且强烈推荐的方法。当您创建启用自动存储的数据库(这是默认设置)时,您可以为数据库定义一组存储路径。从那时起,随着数据增长,Db2会自动管理这些路径中容器的创建、扩展和添加。
使用自动存储表空间,您不再需要手动定义容器路径、大小或扩展。这大大简化了数据库管理,降低了“表空间已满”错误的风险,并允许数据库高效利用所有已分配的存储空间。要添加更多空间,您只需向数据库存储组添加一个新路径,Db2就会自动开始使用它。
传统存储管理(已弃用)
Section titled “传统存储管理(已弃用)”在旧版本的Db2中,另外两种类型的表空间很常见。这些现在已针对用户定义的表空间弃用,不应在新开发中使用,尽管它们仍存在于系统管理的临时表空间和向后兼容性中。
- 系统管理空间(SMS):操作系统的文件管理器负责管理存储。表空间容器是目录,存储作为文件按需分配。此类型自Db2 v10.1起已被弃用。
- 数据库管理空间(DMS):Db2数据库管理器直接控制存储空间。容器是预分配的文件或裸设备。这比SMS提供了更好的性能,但需要更多手动管理。此类型自Db2 v10.1起也已针对用户定义的表空间弃用。
创建新数据库时,Db2会自动配置至少三个基本表空间:
- SYSCATSPACE:一个关键的表空间,用于存放系统编目表。这些表包含数据库中所有对象的元数据。它不能被删除。
- USERSPACE1:所有用户创建的表和索引的默认表空间。如果您在创建表时未指定表空间,它将被放置在此处。
- TEMPSPACE1:默认的系统临时表空间。Db2将此空间用于内部操作,如排序、连接和重组表。一个数据库必须至少有一个系统临时表空间。
页面大小和表空间限制
Section titled “页面大小和表空间限制”页面大小(4 KB、8 KB、16 KB或32 KB)是表空间及其关联缓冲池的基本特性。它决定了表空间及其内部表的最大大小。现代的“大型”表空间(自动存储的默认设置)支持非常大的大小。
| 页面大小 | 最大表大小 | 最大表空间大小 |
|---|---|---|
| 4 KB | 256 GB | 64 TB |
| 8 KB | 512 GB | 128 TB |
| 16 KB | 1024 GB (1 TB) | 256 TB |
| 32 KB | 2048 GB (2 TB) | 512 TB |
注意:这些是Db2最新版本中大型表空间的近似限制。请始终查阅您特定Db2版本的文档。
实践示例:创建表空间
Section titled “实践示例:创建表空间”以下是创建新的自动存储表空间,然后在其中创建表的示例。这假设您的数据库已启用自动存储。
-- 步骤1:创建一个16K页面大小的缓冲池CREATE BUFFERPOOL BP_APP_16K SIZE AUTOMATIC PAGESIZE 16384;
-- 步骤2:使用新的缓冲池为应用程序数据创建一个新的表空间CREATE TABLESPACE TS_APP_DATAPAGESIZE 16 KMANAGED BY AUTOMATIC STORAGEBUFFERPOOL BP_APP_16K;
-- 步骤3:在新表空间中创建表CREATE TABLE app_user.transactions ( transaction_id BIGINT NOT NULL, product_id INT, transaction_time TIMESTAMP)IN TS_APP_DATA;