所以我试图更新1000万行表中的100万行。
我有Y的索引。
一次大规模更新似乎永远不会完成。我认为这是由于在tempdb中维护数据而导致事务需要回滚,而tempdb可能不够大并且需要寻呼到磁盘等。而块循环只需要一次为50k行执行此操作
在其他想法之后,如果我错了,请纠正我,我来自Oracle背景,因此不能完全确定回滚段的等价物是什么
<script src="//unpkg.com/vue@latest/dist/vue.js"></script>
<main>
<video id="videoElement" controls poster="velocity-thumbnail.jpg" v-play="playing">
<source src="https://s3-ap-northeast-1.amazonaws.com/daniemon/demos/Velocity-Mobile.mp4" type="video/mp4" media="all and (max-width:680px)">
<source src="https://s3-ap-northeast-1.amazonaws.com/daniemon/demos/Velocity-Mobile.webm" type="video/webm" media="all and (max-width:680px)">
<source src="https://s3-ap-northeast-1.amazonaws.com/daniemon/demos/Velocity-SD.mp4" type="video/mp4">
<source src="https://s3-ap-northeast-1.amazonaws.com/daniemon/demos/Velocity-SD.webm" type="video/webm">
<p>Sorry, there's a problem playing this video. Please try using a different browser.</p>
</video>
<div class="controls">
<button v-show="paused" @click="play">▶</button>
<button v-show="playing" @click="pause">⏸</button>
</div>
</main>
但是在一分钟内完成了50000次整理
checkMenuItem.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
if (isSelected) {
scene.getRoot().setStyle("-fx-base:black");
} else {
scene.getRoot().setStyle("");
}
});
答案 0 :(得分:0)
这可能是数据库负载过重(或服务器功能不足)的情况,基于集合的操作非常繁重而且根本无法完成,因为它无法获得锁定或需要一次性处理大量资源
根据设计,游标可以处理较小的数据子集,理论上这应该较慢,但可能不适合您的特定情况。
从这里开始:https://stackoverflow.com/a/10013070/937131
光标可以节省您的时间 - 因为您不需要等待 处理和下载完整的记录集它将为您节省开支 内存,无论是在服务器上还是在客户端上,因为他们没有 将大量内存奉献给结果集
一致性:使用游标,你(通常)不会操作a 数据的一致快照,但是在一行上。所以你的 并发/一致性/隔离保证从整体上降低 数据库(ACID)只有一行。您通常可以通知您的DBMS 你想要的并发级别,但如果你太挑剔了(锁定 你所在的完整桌子,你将扔掉许多 服务器端的资源节省。