标签: isolation-level

mysql和postgresql中的Django事务隔离级别

你知道Django中使用的事务的默认隔离级别吗?是否可以以独立于数据库的方式设置隔离级别?

我主要对mysql和postgres感兴趣.

django-models isolation-level

4
推荐指数
2
解决办法
6412
查看次数

psycopg2超出共享内存和增加max_pred_locks_per_transaction的提示

在postgresql 9.1中插入大量数据时.使用Python脚本,我们在此查询上收到以下错误:

X: psycopg2.ProgrammingError in /home/hosting/apps/X
X_psycopg.py:162 in : Execute 'execute' (
                        SELECT * FROM xml_fifo.fifo
                        WHERE type_id IN (1,2)
                        ORDER BY type_id, timestamp LIMIT 10
                        ): out of shared memory
HINT:  You might need to increase max_pred_locks_per_transaction

我们增加了这个数字但仍然没有共享内存(max_pred_locks_per_transaction = 192).每次我们再次启动脚本时它会运行一段时间,然后给出此错误消息.在Postgres 8.1上我们没有遇到这个问题.

这是postgresql日志文件的一部分:

2012-06-28 02:55:43 CEST HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
2012-06-28 02:55:43 CEST WARNING:  nonstandard use of \\ in a string literal at character 271
2012-06-28 02:55:43 CEST HINT:  Use the escape string syntax …

python postgresql isolation-level postgresql-9.1

4
推荐指数
1
解决办法
2224
查看次数

当 Django 在 postgresql 中使用可序列化事务隔离级别时,哪些特定的异常代表序列化失败?

有时需要对 Django 中的数据库操作使用比默认的“已提交读”更高的隔离级别。 文档警告说:

在更高的隔离级别下,您的应用程序应该准备好处理因序列化失败而引发的异常。

但是哪些特定的异常表示序列化失败,而不是查询或事务的一些其他问题?

序列化失败后的简单重试机制可能如下所示:

for retries in range(0, 3):
    try:
        with transaction.atomic():
            MyModel.objects.update(foo='bar')
    except StuffHappened:
        continue
    else:
        break
Run Code Online (Sandbox Code Playgroud)

应该替换哪些特定异常,StuffHappened以便只有序列化失败而不是其他异常会导致重试?

Django 有多种数据库异常事务异常。其中一个/一些可能代表序列化失败?

为此,我对 postgresql 特别感兴趣。

django postgresql transactions exception-handling isolation-level

4
推荐指数
1
解决办法
982
查看次数

当涉及 Mongo 会话时更改 MongoDB 隔离级别

Whats是MongoDB4.0使用事务时的默认隔离级别。

一份文档说 READ UNCOMMITTED 是默认隔离级别。https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/

另一篇文档说快照是使用事务时的默认隔离级别。 https://www.percona.com/blog/2018/06/25/mongodb-transactions-your-very-first-transaction-with-mongodb-4-0/

哪一个是正确的?可以改变吗?

transactions isolation-level mongodb

4
推荐指数
1
解决办法
6939
查看次数

Django select_for_update 中的锁定记录是否受到更新值的影响

我知道如果我们有多个并发用户, select_for_update 会锁定正在查询的记录。但是否也影响对查询记录的评估。

例如,如果用户 A 和用户 B 基于单个布尔变量“Available”同时查询表“Jobs”。两个用户都想访问可用职位的记录(其中Available = True)。

用户 A 设法先排队,并且他正在访问的记录现在已为用户 B 锁定。

如果用户A将所有记录都更改为False,那么用户B是否不会获取任何记录?或者他是否获得与用户 A 相同的记录,但可用性等于 False?

另外, select_for_update() 是否适用于 MySQL?或者对于并发查询有不同的解决方案吗?

mysql django concurrency mysql-python isolation-level

4
推荐指数
1
解决办法
4259
查看次数

SQL Server快照隔离级别问题

我正在从以下链接研究SQL Server 2008的快照隔离级别.我的困惑是,

http://msdn.microsoft.com/en-us/library/ms173763.aspx

  1. 提到"当前事务开始后由其他事务进行的数据修改对当前事务中执行的语句不可见". - 其他事务提交的数据似乎对当前快照隔离级别事务不可见;

  2. 提到"在SNAPSHOT隔离级别下运行的事务可以查看该事务所做的更改." - 其他事务提交的数据似乎对当前快照隔离级别事务可见.

似乎1和2是冲突的?任何意见?

乔治,提前谢谢

sql sql-server transactions isolation-level sql-server-2008

3
推荐指数
1
解决办法
3636
查看次数

我可以从Tomcat上下文设置JDBC隔离级别吗?

我有一个在Tomcat 6中运行的Web应用程序,我已经设法将其配置为使用内置的DBCP连接池,并且一切都运行良好,但我怀疑它在数据库上运行在错误的隔离级别.我希望它以未提交的读取方式运行,但我认为它在read committed中运行,并且不知道如何设置它.

这是我的上下文的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
    <Context antiResourceLocking="false" privileged="true">
        <Resource 
            name="jdbc/Connection" 
            auth="Container" 
            type="javax.sql.DataSource"
            maxActive="100" 
            maxIdle="30" 
            maxWait="10000"
            driverClassName="net.sourceforge.jtds.jdbc.Driver"
            url="jdbc:jtds:sqlserver://...etc..."
        />
    </Context>
Run Code Online (Sandbox Code Playgroud)

这是用于获取数据库连接的Java方法.

public Connection getDatabaseConnection() throws ServletException {
    try {
        InitialContext cxt = new InitialContext();
        if ( cxt == null ) {
            throw new ServletException( "ServletContext unavailable." );
        }

        DataSource ds = (DataSource)cxt.lookup( "java:/comp/env/jdbc/Connection" );
        if ( ds == null ) {
            throw new ServletException( "Data source not found!" );
        }

        Connection conn = ds.getConnection();
        return conn;
    } etc...
Run Code Online (Sandbox Code Playgroud)

获得连接之后, …

tomcat jdbc isolation-level

3
推荐指数
1
解决办法
8639
查看次数

Oracle事务读取一致性?

我在理解数据库(Oracle)中的读取一致性时遇到问题.

假设我是银行的经理.客户有锁(我不知道)并正在进行一些更新.现在,在他获得锁定后,我正在查看他们的帐户信息,并尝试对其进行一些操作.但由于读取的一致性,我会看到客户获得锁定之前存在的数据.那么这不会影响我得到的投入以及我将在那段时间做出的决定吗?

oracle locking transactions isolation-level

3
推荐指数
1
解决办法
6428
查看次数

保持SELECT不检索在事务开始后提交的行

鉴于这种情况:

TIME  TRANSACTION 1             TRANSACTION 2
1sec  BEGIN
2sec  INSERT RECORDS INTO T1   
3sec  (doing other things)      BEGIN
4sec  (doing other things)      (doing other things)   
5sec  COMMIT                    (doing other things)   
6sec                            SELECT * FROM T1    <<- GETS ROWS INSERTED BY T1
Run Code Online (Sandbox Code Playgroud)

根据postgres文档:

另请注意,如果其他事务在执行第一个SELECT期间提交更改,则两个连续的SELECT命令可以看到不同的数据,即使它们位于单个事务中

问题是:如何避免SELECT在事务开始和查询开始之间提交行.

sql postgresql concurrency transactions isolation-level

3
推荐指数
1
解决办法
83
查看次数

了解JPA锁与事务隔离级别

我试图理解这些概念之间的关系。jpa锁是否是从Java在DB中提供/调用事务隔离级别的方法?还是它是分开的机制,所以有什么区别(它们的目的)?

java jpa isolation-level locks

3
推荐指数
1
解决办法
1679
查看次数