我有一个使用MySQL的django应用程序,目前在调试一个死锁时遇到了一个问题(我对SQL比较陌生),这种死锁是偶尔发生的(这种情况在一两个小时内不会发生,然后突然间我会连续出现10个死锁)。我的应用程序是流式实时股权信息约600证券,然后为每个证券更新约50种不同的计算。在
这似乎是导致问题的代码块:cursor.execute('UPDATE position_mgmt_securities '
'INNER JOIN position_mgmt_issuers ON position_mgmt_securities.issuer_id = position_mgmt_issuers.id '
'INNER JOIN position_mgmt_positions ON position_mgmt_securities.id = position_mgmt_positions.security_id '
'SET moneyness_pct = CONVERT(underlying_price / strike_price - 1, DECIMAL(12,5)) '
'WHERE (position_mgmt_securities.issuer_id IN '
'(SELECT id '
'FROM (SELECT * FROM position_mgmt_issuers) AS x '
'WHERE x.ticker = "{0}") AND position_mgmt_positions.close_date IS NULL AND position_mgmt_securities.security_type_id = "ECO")'.format(ticker.replace(' EQUITY', '')))
运行SHOW ENGINE INNODB STATUS时,我得到以下死锁信息。在
^{pr2}$