数据库锁和程序锁的区别与联系是什么?

大板牙花生 2021-01-28 10:32:57
如题?是否采用了事务就不需要在并发程序中对数据库家程序锁了?数据库能够自行通过数据库锁解决并发访问的问题?
...全文
462 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大板牙花生 2021-01-29
  • 打赏
  • 举报
回复
赵老师,存储过程不是必须的吧?另外,并发下使用数据库的话,数据库加锁是自动的吗,并发访问引起阻塞怎么处理,会不会产生脏读等问题?像SQLITE这样的轻量级的,如何查看了解是否支持并发的?
maguangzhi 2021-01-29
  • 打赏
  • 举报
回复
引用 楼主 大板牙花生的回复:
如题?是否采用了事务就不需要在并发程序中对数据库家程序锁了?数据库能够自行通过数据库锁解决并发访问的问题?
一个锁程序,一个锁数据,能相互替代吗?
maguangzhi 2021-01-29
  • 打赏
  • 举报
回复
完全不同的概念,一个锁程序,一个锁数据,怎么能互相代替。
赵4老师 2021-01-29
  • 打赏
  • 举报
回复
引用 8 楼 大板牙花生 的回复:
一是并发程序以串行命令使用数据库单例模式的连接 ,二是并发程序使用并行模式依靠数据库锁保证完整性,前者是否可行,效果哪个更好?还是有什么其他。请教
使用数据库存储过程,在存储过程中使用事务 如果是多进程并发,每个进程使用一个数据库连接 如果是多线程并发,每个线程使用一个数据库连接
大板牙花生 2021-01-29
  • 打赏
  • 举报
回复
一是并发程序以串行命令使用数据库单例模式的连接 ,二是并发程序使用并行模式依靠数据库锁保证完整性,前者是否可行,效果哪个更好?还是有什么其他。请教
赵4老师 2021-01-29
  • 打赏
  • 举报
回复
数据库锁避免并发的不同数据库连接上写同一条数据库中的数据冲突(比如合租的两个人不能同时睡一张单人床) 程序锁避免并发的不同程序进程或线程写同一内存中的数据冲突(比如合租的两个人不能同时在一个锅里炒菜) (合租的两个人显然不能把单人床和炒菜锅的排他性互相代替)
qybao 2021-01-29
  • 打赏
  • 举报
回复
引用 4 楼 大板牙花生 的回复:
我知道肯定不一样,是说,他们能够互相代替吗,比如可以用程序锁的实现去代替数据库锁吗?或者是并发的程序,直接使用事务,然后不需要在程序中对数据库加锁
这很明显不能代替啊,程序锁是程序自己的内存锁,程序可以运行在多个客户端,程序锁只能锁自己的客户端,锁不住别的客户端继续访问数据库。而且,同一个客户端也可以启动多个相同的程序(多个进程),多个程序之间也不能互锁。
赵4老师 2021-01-29
  • 打赏
  • 举报
回复
引用 4 楼 大板牙花生 的回复:
我知道肯定不一样,是说,他们能够互相代替吗,比如可以用程序锁的实现去代替数据库锁吗?或者是并发的程序,直接使用事务,然后不需要在程序中对数据库加锁
不能互相代替
大板牙花生 2021-01-29
  • 打赏
  • 举报
回复
我知道肯定不一样,是说,他们能够互相代替吗,比如可以用程序锁的实现去代替数据库锁吗?或者是并发的程序,直接使用事务,然后不需要在程序中对数据库加锁
赵4老师 2021-01-29
  • 打赏
  • 举报
回复
数据库锁避免并发的不同数据库连接上写同一条数据库中的数据冲突 程序锁避免并发的不同程序进程或线程写同一内存中的数据冲突
赵4老师 2021-01-29
  • 打赏
  • 举报
回复
引用 10 楼 大板牙花生 的回复:
赵老师,存储过程不是必须的吧?另外,并发下使用数据库的话,数据库加锁是自动的吗,并发访问引起阻塞怎么处理,会不会产生脏读等问题?像SQLITE这样的轻量级的,如何查看了解是否支持并发的?
百度搜“SQLite支持并发和事务吗?”

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧