关于 django 事务隔离级别的设置。 - V2EX
首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI
- Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX
Python
关于 django 事务隔离级别的设置。
dxandlight
2016-10-26 11:54:38 +08:00
3885 次点击
这是一个创建于 3274 天前的主题,其中的信息可能已经有所发展或是发生改变。
这几天用 django 操作事务的时候,有一个地方需要获取一个字段的状态来确认是否对象需要更新。在操作过快(比如很快连续提交两次的时候)这个事务会读取到同样的状态,但是正常应该是第一次表数据更新,第二次读取的时候并没有读到更新的记录。后来查了一下,是因为 mysql 默认的事务级别是 REPEATABLE-READ 类型,这会导致事务并发读取的数据一致,后来在 settting.py 里改了 mysql 的配置事务级别 SERIERLIZED ,就好了,但是所有事务都变成这样级别了,这样事务的执行效率会很低,如果我不想设置全局的,在需要操作某个事务能根据需要设置事务的级别, django 应该怎么做?求各位大大帮帮忙啊。
事务
django
级别
MySQL
4 条回复
1
R4rvZ6agNVWr56V0
2016-10-26 14:12:06 +08:00
存在幻读问题么?
如果不是设置成全局,可执行 SQL : SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE 更改隔离级
2
dxandlight
OP
2016-10-26 15:02:19 +08:00
@
GeekGao
django 怎么设置啊,这个只能配置里加啊,然后就变成全局的了。
3
yjmade
2016-10-26 15:51:07 +08:00
我的办法是加锁,在把要更新的对象读取出来的时候用 select_for_update 把该条记录锁住,那么并发的对相同记录的读取和写入就会等待锁释放,然后获取到的值就是刚更新过的值了
4
R4rvZ6agNVWr56V0
2016-10-26 16:15:32 +08:00
@
dxandlight
django 框架默认似乎没有动态设置的样子,可以做一些代码级的 hack
关于
帮助文档
自助推广系统
博客
API
FAQ
Solana
3791 人在线
最高记录 6679
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 22ms
UTC 00:47
PVG 08:47
LAX 17:47
JFK 20:47
Do have faith in what you're doing.
ubao
snddm
index
pchome
yahoo
rakuten
mypaper
meadowduck
bidyahoo
youbao
zxmzxm
asda
bnvcg
cvbfg
dfscv
mmhjk
xxddc
yybgb
zznbn
ccubao
uaitu
acv
GXCV
ET
GDG
YH
FG
BCVB
FJFH
CBRE
CBC
GDG
ET54
WRWR
RWER
WREW
WRWER
RWER
SDG
EW
SF
DSFSF
fbbs
ubao
fhd
dfg
ewr
dg
df
ewwr
ewwr
et
ruyut
utut
dfg
fgd
gdfgt
etg
dfgt
dfgd
ert4
gd
fgg
wr
235
wer3
we
vsdf
sdf
gdf
ert
xcv
sdf
rwer
hfd
dfg
cvb
rwf
afb
dfh
jgh
bmn
lgh
rty
gfds
cxv
xcv
xcs
vdas
fdf
fgd
cv
sdf
tert
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
shasha9178
shasha9178
shasha9178
shasha9178
shasha9178
liflif2
liflif2
liflif2
liflif2
liflif2
liblib3
liblib3
liblib3
liblib3
liblib3
zhazha444
zhazha444
zhazha444
zhazha444
zhazha444
dende5
dende
denden
denden2
denden21
fenfen9
fenf619
fen619
fenfe9
fe619
sdf
sdf
sdf
sdf
sdf
zhazh90
zhazh0
zhaa50
zha90
zh590
zho
zhoz
zhozh
zhozho
zhozho2
lislis
lls95
lili95
lils5
liss9
sdf0ty987
sdft876
sdft9876
sdf09876
sd0t9876
sdf0ty98
sdf0976
sdf0ty986
sdf0ty96
sdf0t76
sdf0876
df0ty98
sf0t876
sd0ty76
sdy76
sdf76
sdf0t76
sdf0ty9
sdf0ty98
sdf0ty987
sdf0ty98
sdf6676
sdf876
sd876
sd876
sdf6
sdf6
sdf9876
sdf0t
sdf06
sdf0ty9776
sdf0ty9776
sdf0ty76
sdf8876
sdf0t
sd6
sdf06
s688876
sd688
sdf86