十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
锁是
在崇信等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站建设 网站设计制作按需设计网站,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,成都外贸网站制作,崇信网站建设费用合理。
数据库保护数据表的一种机制,通常是自动的,分级别的,如果你访问一个表的并发量太大,可以试试拆分这个表,比如按日期拆分成月表,或者利用oracle的功能(分区)进行拆分来分散压力,如果没有依据拆分的话,可以做成实体化快照,将一些查询类的操作指向这个快照,分摊表的访问量,也可以通过提升硬件,比如上SSD磁盘,然后将这个表放到这个磁盘上,提高访问速度。
如果当前有用户在对某行数据进行修改登操作,oracle会在这行数据上添加行级锁,期间,所有用户对该行数据只能查询,不可修改,如果比如说执行update操作,需等待该修改操作事务提交或者回滚之后,才行。
lock table 表名 exclusive mode nowait; -- 锁整个表
select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录
一般select会加一个共享锁的,怎么可能drop 得掉表呢.
除非一种可能
select语句早就运行完了,只是在前端显示的时候要花很长时间!
oracle数据库分行级锁和表级锁。用select * from table-name for update完成行级锁。用delete或update完成表级锁。你锁定的资源 别人会等待你的提交语句或回退语句完成以后再继续进行。
你这个需求是不能够通过数据库的事务管理功能来进行实现的,因为数据库执行的是严格的ACID,提交了就确认持久化了,而不提交就不能够被其他的事务所访问,对于update操作来说,会申请排它锁,这时其他事务是无法访问该数据的,直到commit为止才能够访问。
我觉得你的需求本事就是破坏事务特性的(只部分满足ACID),这时要实现的话就只能从程序的级别来进行实现,就是在编程的时候实现功能,类似事务的控制要用程序来实现,比如更新的日志用缓存存在内存中或写到一个文件上