标签: tablespaces

为什么删除不会增加表中未使用的空间?

如果我填充下表:

IF OBJECT_ID ('dbo.CleanTableTest', 'U') IS NOT NULL
    DROP TABLE dbo.CleanTableTest;
GO
CREATE TABLE dbo.CleanTableTest
    (FileName nvarchar(4000), 
    DocumentSummary nvarchar(max),
    Document varbinary(max)
    );
GO
-- Populate the table with data from the Production.Document table.
INSERT INTO dbo.CleanTableTest
    SELECT REPLICATE(FileName, 1000), 
           DocumentSummary, 
           Document
    FROM Production.Document;
GO

exec sp_spaceused CleanTableTest
go
Run Code Online (Sandbox Code Playgroud)

结果:

name           rows  reserved  data    index_size  unused
-------------- ----  --------- ------- ----------- ------
CleanTableTest 13    456 KB    440 KB  8 KB        8 KB
Run Code Online (Sandbox Code Playgroud)

但是如果我删除所有行:

delete dbo.CleanTableTest
go

exec sp_spaceused CleanTableTest
go
Run Code Online (Sandbox Code Playgroud)

结果: …

sql-server delete tablespaces

6
推荐指数
2
解决办法
1231
查看次数

Oracle - ORA-01654: 无法扩展表空间中的索引

我提到了以下相关问题,但对我的情况没有帮助:

ORA-01654: 无法在表空间 <索引表空间名称> 中将索引 <索引名称> 扩展 128

我在需要增加大小的同一个表空间中有 2 个索引。

我有 13 个与该表空间关联的 dbf 文件。

如何确保增加正确 dbf 文件的大小以修复上述错误?

index oracle tablespaces

6
推荐指数
1
解决办法
9万
查看次数

在 Oracle 中,您如何将架构移动到不同的表空间?

我注意到在 USERS 表空间中创建了一个架构,但我们的本地规则是它应该单独位于一个表空间中。在 Oracle 中,您如何将架构移动到不同的表空间?

schema oracle tablespaces

5
推荐指数
1
解决办法
1万
查看次数

ORA-00959: 表空间不存在但我可以在选择中看到它

因此,我以 SYSDBA 的身份连接到 Oracle 并尝试运行此命令:

 create user C##demo identified by demopassword;
Run Code Online (Sandbox Code Playgroud)

以创建用户结束。

然后我运行:

alter user C##demo default tablespace PAVEL_DATA temporary tablespace PAVEL_TEMP;
Run Code Online (Sandbox Code Playgroud)

以错误结束:

ORA-00959: 表空间 'PAVEL_DATA' 不存在

但是如果我运行这个命令:

SELECT TABLESPACE_NAME, STATUS, CONTENTS
FROM USER_TABLESPACES;
Run Code Online (Sandbox Code Playgroud)

我可以看到表空间:

  TABLESPACE_NAME          STATUS    CONTENTS
------------------------------ --------- ---------
SYSTEM                 ONLINE    PERMANENT
SYSAUX                 ONLINE    PERMANENT
TEMP                   ONLINE    TEMPORARY
USERS                  ONLINE    PERMANENT
UNDOTBS2               ONLINE    UNDO
PAVEL_DATA             ONLINE    PERMANENT
PAVEL_TEMP             ONLINE    TEMPORARY
Run Code Online (Sandbox Code Playgroud)

那么,为什么在创建表空间时会出现错误表空间不存在?

编辑

根据评论继续,这是我运行时看到的select tablespace_name, con_id from cdb_tablespaces

TABLESPACE_NAME            CON_ID
------------------------------ ----------
PAVEL_DATA              1
PAVEL_TEMP              1
SYSTEM …
Run Code Online (Sandbox Code Playgroud)

oracle tablespaces oracle-12c

5
推荐指数
1
解决办法
6万
查看次数

oracle 11g R2 中的 SYSTEM 和 SYSAUX 表空间空间不足

我的数据库的 SYSTEM 和 SYSAUX 表空间大小现在处于以下状态:

SYSTEM  - PCT_USED= 99
SYSAUX  - PCT_USED= 95
Run Code Online (Sandbox Code Playgroud)

我相信数据库现在处于危急状态。我该怎么做才能使其恢复正常状态,以及应遵循哪些标准方法来确保 SYSTEM 和 SYSAUX 表空间文件的安全。

任何帮助将不胜感激。

oracle oracle-11g-r2 tablespaces

5
推荐指数
1
解决办法
2万
查看次数

不断向现有 PostgreSQL 服务器添加 SSD

专门运行 PostgreSQL 11.2 服务器(带有 TimescaleDB 扩展)的 Ubuntu 18.04 服务器将很快耗尽磁盘空间,因此需要向计算机添加新的 SSD 磁盘以支持不断增长的数据库大小。

数据预计将以相同/更高的速率继续增加,因此需要不断增加存储硬件,直到机器用完 2.5 英寸驱动器托架。只有这时才会考虑将数据库分布在多台机器上,因为所涉及的复杂性增加。

想法

  1. 联合文件系统mergerfs可以将驱动器集中在一起,轻松解决存储扩展问题。但这会增加数据库操作的延迟,因此不建议这样做。可以通过底层 RAID-1/5/6/10 或使用 SnapRAID 添加冗余。

  2. RAID-0 和 RAID-10 允许将 RAID 阵列扩展到新添加的驱动器中,并通过条带化提高性能。然而,每个添加的驱动器都会增加一个故障点。此外,许多人声称镜像 SSD 的用途有限,因为RAID-0 中的两个 SSD 可能会同时发生故障。所以也许这意味着 RAID-10 并不比 RAID-0 更好。此外,故障率随着每增加一个 SSD 而线性增加。

  3. RAID-5/6 由于奇偶校验计算和写入 2 个驱动器而降低了性能,从而使有效 IOPS 降低了 75%。对于数据库来说似乎是一个糟糕的选择。

  4. PostgreSQLTABLESPACES可用于将每个表分配到特定驱动器。然而,使用表空间会使恢复变得非常复杂。此外,是否可以在新驱动器上创建新表空间并让 Postgres 自动决定将新记录写入何处?

  5. ZFS、BTRFS?对他们不熟悉,愿意探索他们是否合适。

问题: 2020年推荐的PostgreSQL机器扩容方法是什么,如果扩容频繁(一年1-2次),性能应该不会受到太大影响,恢复也不会太复杂可能会导致数据丢失?

RAID-10 对我来说似乎是一个好主意,但 RAID-1 的使用似乎有限,同时会导致“损失”一半的磁盘空间,随着驱动器数量的增加,故障点也会增加,情况会变得更糟。

由于预算限制,我们无法一次性将 2U 机箱中的 16 个驱动器托架全部装满 SSD,因此必须逐步完成。

任何意见是极大的赞赏!

编辑:在研究了 ZFS 之后,这似乎可能是我的案例的解决方案之一。

  • 仅包含镜像 ZFS vdev(每个 …

postgresql tablespaces scalability raid timescaledb

5
推荐指数
1
解决办法
656
查看次数

为新用户模式使用不同的表空间有什么好处?

架构中的表旨在以只读方式使用,并且每三个月仅更新一次。

我的问题是指性能维护(备份/恢复、导出/导入)

临时表空间怎么样,在这种情况下使用不同的表空间更好吗?

oracle tablespaces

4
推荐指数
2
解决办法
3922
查看次数

如何删除损坏的表空间?

问题:
在 Oracle 11.2g DB 上;我们有一个损坏的 TS,它不允许在装载状态之上启动数据库实例。无法使用标准方法(即企业管理器)删除 TS。

我们可以做什么?
诊断问题还需要哪些其他信息?

(我们同时检查了文件系统,没问题,但是表空间的 DBF 文件丢失了。)

oracle oracle-11g-r2 tablespaces

4
推荐指数
1
解决办法
1万
查看次数

“城市”是否应该单独放置一张桌子?

我有以下客户表:

customer_id - int 
company_name - nvarchar
street - nvarchar
city - nvarchar
comments - nvarchar
Run Code Online (Sandbox Code Playgroud)

该应用程序将仅在一个小国家(例如 30 个城市)的部分地区使用。一位朋友告诉我,我应该将 'city' 分隔到不同的表 'Cities' 中,并在客户表中仅使用 city_id。

就我个人而言,我没有看到它有什么好处(除了在客户表上节省一些空间,在这种情况下,对于创建另一个表的成本来说,这对我来说似乎无关紧要)。

他还提到,因为我有重复的列 - city: foo, city: bar, city: foo. (同城客户很少)这不算归一化,是真的吗?

谁是对的?关于这个问题的任何启示?

join database-design tablespaces database-theory

4
推荐指数
2
解决办法
7454
查看次数

Oracle,使用不同的表空间创建带有内联约束声明的表

我有两个关于 Oracle 表的内联约束声明的问题:

  1. 这是一种不好的做法吗?如果是这样,为什么?

  2. 如何像使用大纲声明时那样为主键和索引声明不同的表空间?就像是

    创建表 THIS_TABLE (
        身份证号码, 
        约束 THIS_TABLE_PK (id) 表空间 INDEX_TABLESPACE
    ) 表空间 DATA_TABLESPACE;

oracle constraint tablespaces

4
推荐指数
1
解决办法
2万
查看次数