Tag: 事务

为什么SQL数据库在命令日志中使用预写日志?

我读了关于Voltdb的命令日志 。 命令日志logging事务调用,而不是像提前logging中的每一行更改。 通过仅logging调用,命令日志将保持最低限度,从而限制磁盘I / O对性能的影响。 任何人都可以解释为什么Voltdb使用命令日志的背后的数据库理论,为什么标准的SQL数据库,如Postgres,MySQL,SQLServer,甲骨文使用预写日志?

MySQL:存储过程中的事务

我的存储过程的基本结构是, BEGIN .. Declare statements .. START TRANSACTION; .. Query 1 .. .. Query 2 .. .. Query 3 .. COMMIT; END MySQL版本: 5.1.61-0ubuntu0.11.10.1-log 目前,如果“查询2”失败,则提交“查询1”的结果。 如果任何一个查询失败,我怎样才能回滚事务?

片段交易上的片段重复

好的,每当我尝试在我的应用程序中replace一个片段时,它只会将容器中的片段添加到其他片段中,并保留当前片段。 我试过调用replace和引用视图包含片段,并通过引用片段本身。 这些都不起作用。 我可以使用片段事务pipe理器将片段添加到视图中,但是即使我尝试在添加片段后将其删除,也不起作用。 任何帮助,将不胜感激。 这是我的文件。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Setup the actionabar. Use setDrawableBackground to set a background image for the actionbar. final ActionBar actionbar = getActionBar(); actionbar.setDisplayShowTitleEnabled(false); actionbar.setDisplayUseLogoEnabled(true); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionbar.addTab(actionbar.newTab().setText(R.string.home_tab_text).setTabListener(this),true); actionbar.addTab(actionbar.newTab().setText(R.string.insert_tab_text).setTabListener(this)); Fragment fragment = new insert_button_frag(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.button_fragment, fragment); transaction.addToBackStack(null); transaction.commit(); } 这是布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" […]

在事务中截断表

可以在事务中使用SQL“truncate table”命令吗? 我正在创build一个应用程序,我的桌子上有很多logging。 我想删除所有的logging,但如果应用程序失败,我是回滚我的交易。 删除每个logging需要很长时间。 我想知道如果我使用截断表,我仍然可以回滚事务,并在发生故障时恢复数据。 我意识到截断表不写入每个删除到事务日志,但我想知道是否它写页面释放到日志,以便回滚工作。

PostgreSQL函数是事务性的吗?

是PostgreSQL函数,如下面的自动事务? CREATE OR REPLACE FUNCTION refresh_materialized_view(name) RETURNS integer AS $BODY$ DECLARE _table_name ALIAS FOR $1; _entry materialized_views%ROWTYPE; _result INT; BEGIN EXECUTE 'TRUNCATE TABLE ' || _table_name; UPDATE materialized_views SET last_refresh = CURRENT_TIMESTAMP WHERE table_name = _table_name; RETURN 1; END $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER; 换句话说,如果在函数执行过程中发生错误,是否所有更改都会回滚 ? 如果这不是默认的行为,我怎样才能使交易function?

CSS过渡自动高度不工作

我有一个网站,我决定用纯粹的CSS代码replace基于jQuery的切换框。 当我为转换使用固定的高度值(CSS的最后一行)时,效果很好,但是使用auto值时,animation不见了,只有高度变化才有效果! 有没有办法使用这个自动值? 我想使用可变的文本和没有脚本。 .ac-container{ width: 400px; margin: 10px auto 30px auto; text-align: left; } .ac-container label{ font-family: 'BebasNeueRegular', 'Arial Narrow', Arial, sans-serif; padding: 5px 20px; position: relative; z-index: 20; display: block; height: 30px; cursor: pointer; color: #777; text-shadow: 1px 1px 1px rgba(255,255,255,0.8); line-height: 33px; font-size: 19px; background: #ffffff; background: -moz-linear-gradient(top, #ffffff 1%, #eaeaea 100%); […]

我如何在PostgreSQL中进行大量的无阻塞更新?

我想在PostgreSQL的表上​​做一个大的更新,但是我不需要在整个操作中维护事务完整性,因为我知道我正在更改的列不会被写入或读取更新。 我想知道在psql控制台中是否有一种简单的方法来使这些types的操作更快。 例如,假设我有一个包含3500万行的“orders”表,我想这样做: UPDATE orders SET status = null; 为了避免被转移到偏离的讨论,让我们假设3500万列的所有状态值目前设置为相同(非空值),从而使索引无用。 这个声明的问题是生效需要很长时间(仅仅是因为locking),所有更改的行都被locking,直到整个更新完成。 此更新可能需要5个小时,而类似的 UPDATE orders SET status = null WHERE (order_id > 0 and order_id < 1000000); 可能需要1分钟。 超过三千五百万行,做上面的,并把它分成35块只需要35分钟,为我节省4小时25分钟。 我可以用脚本(在这里使用伪代码)进一步分解: for (i = 0 to 3500) { db_operation ("UPDATE orders SET status = null WHERE (order_id >" + (i*1000)" + " AND order_id <" + ((i+1)*1000) […]

EF代码首先DBContext和事务

我想知道什么是用DBContext实现事务的最好方法。 尤其是, 如果我更改多个实体, DbContext.SaveChanges实现事务内部吗? 如果我想多次调用DbContext.SaveChanges (同一个contxet /不同的contxets),如何实现事务?

何时使用save !,请创build! 和update_attributes! 在Rails中?

我试图找出什么时候使用砰! 保存和更新logging的版本? 我读过并且听说如果你只保存一条logging或更新一个属性,如果你确信没有什么问题,或者总是在控制器之外使用它们,你就不需要它们了。 我想我是多疑的事情得到保存,然后失败,然后有不完整的数据在数据库中。 目前我正在使用的Rails项目已经完成了超过50%,目前不包含任何爆炸声。 我有一些自定义的方法,我正在调用更新或创build多个logging的模型,并担心它们是否应该进行某种事务。 对不起,如果这似乎分散,但我只是想弄清楚如何正确使用ActiveRecord中的保存function,使我的生活更轻松,最终免费一点点。 谢谢你的时间。

Database.BeginTransaction与Transactions.TransactionScope

System.Transactions.TransactionScope和EF6的Database.BeginTransaction什么区别? 有人可以举一个小例子,或只是解释清楚使用哪一个? PS:在我的项目中,我正在使用EF6。 我已经阅读了文档,但没有多大帮助。 还查了一些例子,但是他们使用的是SqlConnection.BeginTransaction ,现在MS已经在EF6中引入了这个新的Database.BeginTransaction 。