- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究提高我的网站的 SQLite 性能,特别是在事务方面。本质上,我正在寻找一种在进程中推迟数据库写入的方法,以便它们可以同时完成。但是,当我累积更新查询时,我希望其他进程能够读取和写入数据库,并且仅在进程中发出提交后才锁定文件以进行写入。
在查看文档时,似乎一旦在事务中发出更新命令,该进程就会获得保留锁,这(如果我没记错的话)意味着任何其他尝试添加更新查询的进程它自己的事务或提交事务无法这样做,因此会阻塞,直到事务在带有锁的进程上提交为止。
我确信有非常好的数据完整性理由反对此特定功能。我只能说,就我而言,同时执行这些更新没有危险。
一个解决方案是,在每个进程中,我可以在数组中累积我希望调用的查询文本,然后在准备好写入后循环它,但我想知道 SQLite 事务是否可以自动为我执行此操作。
更新:当我说“立即执行所有更新”时,我的意思本质上是使用 SQLite 中的事务来仅获得独占锁并每个进程写入一次磁盘,而不是每个进程写入一次询问。这使得使用 SQLite 的速度提高了 100 倍。
我已经做了一些基本测试,似乎一旦您有多个进程向其事务添加查询,一旦您点击更新查询,该进程就会尝试获取 RESERVED 锁。由于只有一次进程可以拥有保留锁,这意味着任何其他尝试获取锁的进程都将阻塞,直到拥有锁的进程完成事务。
我承认这个问题可能是一个过早的优化,因为我还没有遇到任何性能损失,但我已经运行了一些简单的测试,100 个用户每个创建和运行一个包含 100 个查询的事务在 PHP 中大约需要 4 秒我的机器。
最佳答案
SQLite 支持ATTACH将一个数据库附加到另一个数据库。也许您可以将数据累积在单独的数据库中,当您准备好合并累积的行时,附加单独的数据库,在单个语句中复制行,然后分离。
编辑:对 mailing list thread 向OP提出了类似的建议在 sqlite-users 上进行一些后续讨论。
关于SQLite非独占RESERVED锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291897/
我的 DateTime 对象使用 DateTime.Now 分配了本地时间。我想知道一旦夏令时开始/结束,这个对象是否会给出正确的当前本地时间。或者我需要解决方法吗? 最佳答案 是的,DateTime
假设我需要“特定类别中可用的项目数量”与“所有项目的数量”的比率。请考虑这样的 MySQL 表: /* mysql> select * from Item; +----+------------+--
我有这张 table http://codepen.io/MetCastle/pen/lxceL我想使用 jQuery 根据 input type="number" 隐藏/显示列。表示整个列: Pro
想要制作一个看起来像这样的网格,其中 div/section 以百分比表示。 margin 在任何地方都是一样的。 http://www.ladda-upp.se/bilder/giefekcmgwm
这将返回 1(又名 TRUE) SELECT DATE_SUB(NOW(), INTERVAL 24*100 HOUR) = DATE_SUB(NOW(), INTERVAL 100 DAY); 10
我一直在尝试在 UIScrollView 中获取 UIView 的转换后的 CGRect。如果我不放大它就可以正常工作,但是一旦我放大,新的 CGRect 就会发生变化。这是让我接近的代码: CGFl
对于家庭作业,我需要在不使用内置模 (%) 运算符的情况下返回 num1 除以 num2 后的余数。我能够通过以下代码让大多数测试通过,但我仍然坚持如何解释给定数字的 -/+ 符号。我需要保留 num
我用 Javascript 创建了一个倒数计时器;它是成功的,期望未完成。事实上,从数学上讲,它是正确的,但是谷歌浏览器的浏览器设置“暂停”(因为没有更好的术语)SetInterval/Timeout
我有两个 的,每个都设置为其容器宽度的 45%。有没有办法使 居中?使得它们在容器的左右两侧有相同的空间,并且它们之间也有空间。 一开始我只是做了每个 50% 并且有 padding: 0px 2
我是一名优秀的程序员,十分优秀!