AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[truncate](dba)

Martin Hope
Ryan Rapini
Asked: 2019-03-23 02:25:42 +0800 CST

当在 Postgres 的外表上调用 TRUNCATE CASCADE 时,仍然会删除 ON DELETE SET NULL 的外键

  • 5

也许我在这里遗漏了一些东西:

CREATE TABLE public.example_table (
    id integer UNIQUE
);

CREATE TABLE public.foreign_table (
    id integer,
    example_table_id integer,
    CONSTRAINT fk_example_table_id
    FOREIGN KEY (example_table_id)
    REFERENCES public.example_table (id)
    ON DELETE SET NULL
);

INSERT INTO public.example_table (id) VALUES
    (1);

INSERT INTO public.foreign_table (id, example_table_id) VALUES
    (1, 1),
    (2, null);

如果我运行TRUNCATE CASCADE,两个表都会被擦除,这不是我所期望的。

TRUNCATE example_table CASCADE;

SELECT COUNT(*) FROM public.foreign_table;

0

我期望发生的事情foreign_table会改变为:

(1, null)
(2, null)

我不明白 SET NULL 应该完成什么吗?

有没有办法使用 TRUNCATE CASCADE 而不从另一个表中删除它?我在可以调用的地方使用 Laravel,Model::truncate();它会自动截断表并重置我的索引,我希望我可以调用它example_table并让它重置所有行,foreign_table而null不是仅仅删除整个表。

谢谢你的帮助。

postgresql truncate
  • 1 个回答
  • 1521 Views
Martin Hope
SHR
Asked: 2018-07-06 06:18:25 +0800 CST

TRUNCATE TABLE 可以在 SQL Server 上重载吗?

  • 5

我知道这可能看起来像一个奇怪的问题......

我有一个第 3 方数据库和服务,我想通过每个表上INSERT的DML 触发器来监视它。UPDATEDELETE

但是,唉,我在TRUNCATE TABLE调用时遇到了问题,因为它没有激活DELETE触发器。

我正在寻找一种“超载”的方法,TRUNCATE TABLE就像:

DELETE FROM X; --remove all rows
TRUNCATE TABLE X; --truncate the empty table

或者也许在截断之前激活一些 DDL 触发器,这样我就可以检查哪些行将被截断。

如果还有其他建议,我会很高兴。

这样的事情可能吗?

编辑

我不想禁用truncate我只想监视数据。

它是第 3 方数据库,它被我无法控制的服务使用,所以我无法阻止truncate.

我只是想监控变化,目前无法跟踪由truncate命令引起的记录删除。

谢谢!

sql-server truncate
  • 1 个回答
  • 1313 Views
Martin Hope
davetapley
Asked: 2017-07-29 10:58:26 +0800 CST

Postgres 建议“同时截断表......”

  • 16

运行时:

TRUNCATE TABLE YYYYY RESTART IDENTITY

我看到此错误消息:

ERROR:  cannot truncate a table referenced in a foreign key constraint
DETAIL:  Table "XXXXX" references "YYYYY".
HINT:  Truncate table "XXXXX" at the same time, or use TRUNCATE ... CASCADE.

在以下两个建议中HINT:

  1. 使用TRUNCATE ... CASCADE是有意义的,并且有效,但不太明确,因为必须检查YYYYY以查看级联的去向。这让我想尝试另一种选择:

  2. Truncate table "XXXXX" at the same time,但我的问题:

    截断表是什么意思at the same time?


我尝试添加 a TRUNCATE XXXXX...(并将它们都包装在BEGIN/中COMMIT),但这会产生相同的错误。

postgresql truncate
  • 2 个回答
  • 14528 Views
Martin Hope
Magier
Asked: 2015-08-12 05:50:56 +0800 CST

SQL 脚本花费的时间比估计的要长得多

  • 1

为了清理在 IMAGE 列中保存二进制文件的非常大的表,我创建了以下序列(基于此:文章)以快速摆脱这些图像 Blob 的一部分:

  1. Select * into temp table where(过滤一小部分我想保留)
  2. Select其余行WITH的NULLBLOB 值相同temp table。
  3. 截断原始 blob 表
  4. 将所有记录从临时表复制回原始表。

我在本地机器(笔记本电脑)上进行了测试运行,第一个步骤花费了大约 20 秒,获得了大约 2 Milion 记录。

整个脚本耗时约 4 分钟,而原始表包含约 250 万条记录。

在登台服务器环境中。第一步同时需要 > 25 分钟来复制 320 万条记录!!!SSMS 实际上停止与我交互。我估计(使用 calc.exe)可能需要大约 1 分钟...

现在我想知道出了什么问题......?

TY

sql-server truncate
  • 3 个回答
  • 139 Views
Martin Hope
mohan
Asked: 2014-07-27 11:33:20 +0800 CST

在超过百万行的表上 TRUNCATE TABLE 后 INSERT/SELECT 缓慢

  • 0

截断超过 600 万行的表后,插入/选择速度很慢。

我每天向表中插入 5 到 6 百万条记录,并且我能够在 7 或 8 天内毫无问题地插入/选择数据,但是当表大小超过 10 GB/3000 万行时,会出现一些超时问题。

所以我想在上传数据之前每天截断表格,因为 1 天的数据对我来说已经足够了。现在我在截断后看到极度缓慢。我正在使用 sql server 2008。

我需要更新表格统计信息吗?还是与鬼行有关?

sql-server truncate
  • 1 个回答
  • 2756 Views
Martin Hope
U01SFA3
Asked: 2014-04-24 08:37:50 +0800 CST

庞大的 MSDB 数据库

  • 4

我有一个非常大的 MSDB 数据库,并且一直在努力清除它并设置维护任务——这是我的前任几年前应该做的事情!

到目前为止,我已经设法截断了sysmaintplan_logdetail和sysmaintplan_log文件。

现在我希望查看一些备份数据库——备份文件表超过 5Gb。

我尝试使用 SP sp_delete_backuphistory但这填满了我的 MSDB 事务日志并几乎杀死了服务器......

有没有其他方法可以清除它并缩小文件而不造成任何损坏?

有关信息,我的 MSDB 数据文件仍然是 20Gb,使用的是 13Gb。登录500Mb,用了6Mb。

任何帮助将不胜感激 - 我不是 DBA!

disk-space truncate
  • 1 个回答
  • 3896 Views
Martin Hope
Tulains Córdova
Asked: 2013-09-17 10:05:33 +0800 CST

Oracle:截断大表需要很长时间

  • 2

问题

  • 我正在截断一个非常大的表(210+ 百万行)。
  • 自开始以来已经有几个小时了,我不知道什么时候会完成。
  • 有几个这样的表,我想截断。
  • 数据库是 Ora9i。

问题

  • 我怎样才能使截断更快?
  • 另外,有没有办法查看截断操作的进度?
performance truncate
  • 2 个回答
  • 16429 Views
Martin Hope
mctuna
Asked: 2013-05-18 05:30:00 +0800 CST

“Truncate”或“Delete/Vacuum Full”用于删除某些表行

  • 2

我有一个有 223 个表的数据库,我必须从其中的 10 个表中删除一些记录,每个表都有 apprx。150 万条记录。这些表每 7 秒存储一次温度。我们已决定删除所有记录,但每分钟的第一条记录除外。所以现在每分钟有 8 条记录,在这个过程之后,它将每分钟存储 1 条超过 3 个月的记录。

我应该通过删除并在之后清空还是截断来做到这一点?还有一些与其中一些表相关的视图。如果我通过截断来做到这一点,那么这些观点之后会起​​作用吗?

postgresql truncate
  • 1 个回答
  • 2037 Views
Martin Hope
jrara
Asked: 2012-03-26 13:04:17 +0800 CST

哪些因素会阻止和延迟 TRUNCATE 命令?

  • 4

我有一个很大的表,可能有 5000 万行,我不得不截断它。通常 truncate 非常快,但在这种情况下需要数小时才能完成。有哪些因素可以阻止truncate命令正常运行?

sql-server truncate
  • 1 个回答
  • 1168 Views
Martin Hope
Adam Matan
Asked: 2011-06-27 07:04:52 +0800 CST

PostgreSQL:TRUNCATE 后未释放磁盘空间

  • 16

我有TRUNCATE一个巨大的(~120Gb)表,名为files:

TRUNCATE files;
VACUUM FULL files;

表大小为 0,但没有释放磁盘空间。任何想法如何回收我丢失的磁盘空间?

更新: 磁盘空间在大约 12 小时后被释放,我没有采取任何行动。我使用 Ubuntu 8.04 服务器。

postgresql truncate
  • 1 个回答
  • 7271 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve