首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一次删除还是分批删除

今天有位同事说“传言一次删除量大,是更慢”,这句话有对的地方,但重要的是问个为什么,只有知道了它的原因才能更好地使用Oracle提供的技术。...我个人的理解是:删除量大小主要受限于UNDO表空间,因为执行DELETE每条记录时会将原始数据(镜像)放到UNDO中缓存,以防回滚,若UNDO空间小,一次删除量大,则会可能出现UNDO表空间不足的报错(...ORA-30036: unable to extend segment by 8 in undo tablespace),(如果分批次数多)甚至是那个著名的错误(ORA-1555),且会经常需要进行日志与数据从...我感觉是分批提交,还是一次性提交,是要具体问题具体分析的,对于UNDO空间大,且即使一次提交也不会撑爆的情况下,当然选择一次提交,这样的操作只进行一次,效率自然高,但对于UNDO空间小,或者一次提交的量太大...,这种情况下可以选择分批提交,但同时也需要做好测试,找到分批量的一个平衡点,既满足于UNDO空间容量的限制,又不至于对应用性能产生太差的影响。

67530
您找到你想要的搜索结果了吗?
是的
没有找到

【DB笔试面试468】分批插入、分批更新、分批删除分批提交的写法有哪些?

题目部分 分批插入、分批更新、分批删除分批提交的写法有哪些? 答案部分 这个知识点也是检测程序员编程能力的主要考题,分为3个类别:分批插入、分批更新、分批删除分批提交。...其中,分批更新也可以采用游标FOR循环加ORDER BY排序的方式,效率也是非常不错的。 下面作者给出3个模版程序,若笔试中出现类似的题目,则可以照猫画虎。...1、分批UPDATE DROP TABLE T2; CREATE TABLE T2 AS SELECT OBJECT_NAME FROM DBA_OBJECTS; SELECT * FROM T2;...ROWID = L_RIDS(I); COMMIT; EXIT WHEN C%NOTFOUND; END LOOP; CLOSE C; END; / 2、分批...DBA_OBJECTS; DECLARE CURSOR MYCURSOR IS SELECT ROWID FROM T3 ORDER BY ROWID; --按ROWID排序的CURSOR,删除条件是

93520

MYSQL 删除语句

数据库存储数据,总会有一些垃圾数据,也会有一些不需要用的数据了,这些情况下,我们就可以删除这些数据,释放出一定的空间,给其他的数据使用 使用前需注意:删除(DELETE),是删除一(条)行数据,图1里...,有4条(行)数据,换句话说,你要删除第四条 名字为“巴巴”的用户,那么关于他的 id、密码、性别、年龄都会被删除 删除前: 删除修改都有一共共同点,需要 WHERE 过滤条件,否则,也会删除多条数据...同学们,我们先来一波推理吧,理论: 你给机器下达命令:给本大爷删除这个表里的“某个”数据,你想的是,删除某个数据,但是你没有给出条件,那么机器收到的命令则是:我去给大爷删除这个表的数据。...所以说,我们是 修改数据、删除数据,都要找到,我们要删除谁?就要给出条件:我要删除这个被多个玩家举报开外挂的用户。...嘛,这里就不多说,会让初学同学搞不懂 说这么多,就为了一点:使用修改或是删除语句的时候,请注意,你要删除的对象是谁,要谨慎。

9.5K30

TP6.0 模型的关联删除

关联删除 2. User 模型定义 3. 关联删除使用示例 4. 特别注意 1....关联删除 ---- 模型的关联删除是经常使用的模型特性之一 适用场景举例: 1、在删除文章的同时删除下面的评论 2、 删除用户的同时删除用户的多条评论多条操作日志 2....User 模型定义 ---- 一个用户对应多条评论多条操作日志,并且在用户模型已经定义模型关联方法 /** * 一对多关联 用户对应多个评论 * * @return \think\model\relation...关联删除使用示例 ---- 删除一个用户及其发布的评论、操作日志 $user_id = 1; $data = User::with(['comments', 'logs'])->findOrEmpty(...特别注意 ---- 查询时必须使用 with 关联预载入,否则 together 关联删除无效

82320

java 物理删除逻辑删除

java 物理删除逻辑删除 逻辑删除:文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。...物理删除:指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的 物理删除是计算机处理数据时的一个概念。 与物理删除相对应的是逻辑删除。...逻辑删除就是对要要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。...配置逻辑删除的步骤: 在配置文件yml中应该配置的信息 mybatis-plus: global-config: db-config: logic-delete-value: 1...# 逻辑已删除值(默认为 1),该具体删除值和数据库中的表数据对应即可 logic-not-delete-value: 0 # 逻辑未删除值(默认为 0),该具体删除值和数据库中的表数据对应即可

1.2K30

mysql删除操作其实是假删除

在 InnoDB 中,你的 delete 操作,并不会真的把数据删除mysql 实际上只是给删除的数据打了个标记,标记为删除,因此你使用 delete 删除表中的数据,表文件在磁盘上所占空间不会变小,...#先删除表所有数据,再重新查看表文件大小 mysql> delete from t; Query OK, 100000 rows affected (0.46 sec) mysql> use information_schema...还有一种情况是数据页复用,就是指整个数据页都被标记删除了,于是这整个数据页都可以被复用了,行记录复用不同的是,数据页复用对要插入的数据几乎没有条件限制。...因为你要知道,mysql 在底层是以数据页为单位来存储读取数据的,每次向磁盘读一次数据就是读一个数据页,然而每访问一个数据页就对应一次磁盘 IO 操作,磁盘 IO 相对内存访问速度是相当慢的。...其实不仅仅是删除操作会造成数据空洞,插入更新同样也会造成空洞,这里就不细说了,你知道就行。

3.1K30

Windows下MySQL的安装删除

Windows下MySQL的安装删除 安装Mysql 1 下载mysql 地址 2 安装教程 2.1配置环境变量 变量名:MYSQL_HOME 变量值:D:\software\programming\...按照下面删除步骤 删除完成 在重装 彻底删除Mysql 删除的基础条件 停止MySQL的运行 将MySQL服务停止,这里我只有一个MySQL服务,如有多个MySQL服务,也要全部停止掉。...net stop 要删除mysql服务的名称 卸载mysql server等设备 删除MySQL安装目录下的MySQL文件夹 这个文件目录找不到别找着急 下面步骤能找到 打开注册表编辑器...mysql的位置 删除目录“C:\ProgramData\MySQL”文件夹 删除目录C:\ProgramData\MySQL文件夹,如果显示正在被其他应用所使用,无法进行删除,那么就需要重新启动电脑...只要在CMD里输入一条命令就可以将服务删除: sc delete mysql //这里的mysql是你要删除的服务名 这样一来服务就被删除了。

15810

删除mysql日志文件

的日志文件占据了大部分空间 , 整整27G,于是现在的任务就是清理mysql的日志文件(主要是清理.log文件mysql-bin.00000X二进制日志文件) 一、删除mysql日志文件 第一步:登陆进入...删除日志文件的命令:purge binary logs to ‘mysql-bin.000005’;mysql> purge binary logs to 'mysql-bin.000005'; 删除除...删除后就能释放大部分空间。 二、mysql 定时清理日志文件 如果每次等到发现空间不足的时候才去手动删除日志文件, 这种方式是很不理想的。...编辑mysql的配置文件,设置expire_logs_days(mysql定时删除日志文件) [root@sam ~]# vim /etc/my.cnf 在my.cnf中,添加或修改expire_logs_days...的值 (这里设置的自动删除时间为10天, 默认为0不自动删除)expire_logs_days=10修改后,重启mysql就会生效。

2.9K00

docker 删除_Docker删除镜像容器

当一个host中镜像容器较多,需要重置时可选择删除其中部分或全部的镜像容器。那么你就需要下面的操作了。...1、删除容器 1)首先需要停止所有的容器 docker stop $(docker ps -a -q) 2)删除所有的容器(只删除单个时把后面的变量改为container id即可) docker rm...$(docker ps -a -q) 2、删除镜像 1)查看host中的镜像 docker images 2)删除指定id的镜像 docker rmi 想要删除untagged images,也就是那些...id为的image的话可以用 docker rmi (docker images | grep “^” | awk “{print 3}”) 3)删除全部的images docker rmi $(docker...images -q) 3、当要删除的iamges其他的镜像有关联而无法删除时 可通过 -f 参数强制删除 docker rmi -f $(docker images -q) 发布者:全栈程序员栈长

3K20

讲讲MySQL删除

删除并不是真正的删除 熟悉mysql的同学都应该知道,当我们执行delete的时候,数据并没有被真正的删除,只是对应数据的删除标识deleteMark被打开了,这样每次执行查询的时候,如果发现数据存在但是...deleteMark是开启的话,那么依然返回空,因为这个细节,所以经常会出现“我明明删除了数据,为什么空间没释放”的现象。...15M 7 6 18:46 user_info.ibd #删除前 15M 10 4 16:47 user_info.ibd #删除后 为什么不直接删除,而是打个标记 只是打个标记的话,岂不是很浪费空间...mysql里面有个purge线程,它的工作中有一项任务就是专门检查这些有deleteMark的数据,当有deleteMark的数据如果没有被其他事务引用时,那么会被标记成可复用,因为叶子节点数据是有序的原因...也没有足够的空间来存放一条数据,由于要求数据的连续性,数据5必须在数据4和数据6之间,那么只能新建一个页,新建一个页后,会尝试从pageA中移动一部分数据到新的页上,并且会重新组织页与页之间的关系,即在pageApageB

2.9K20
领券