数据库更新问题 10
在一般的程序中,对于数据库的更新是先查找,确定是否存在然后更新,然而确定是否存在是查找到程序中的,这时候数据库记录可能已经改变了,这种问题在高并发场景很明显,我想问下怎么...
在一般的程序中,对于数据库的更新是先查找,确定是否存在然后更新,然而确定是否存在是查找到程序中的,这时候数据库记录可能已经改变了,这种问题在高并发场景很明显,我想问下怎么解决
展开
6个回答
2018-09-25 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
数据库是按照数据结构来组织、存储和管理数据的仓库,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
2018-09-21 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),平台有hadoop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考一下我以往的处理动态查询方法,或许对你的帮助。
我过去的作法是,动态查询前针对表或query生成三个视图,第一个存储上次查询取来的记录,第二个是当前取到的记录数据,第三个是一和二视图相比较而得到的最新添加的记录,每次有取动作时,都要刷新。
要点,被查询的主表或query的排序和过滤关键字字段必须是记录号或ID关键字, 保证新记录排在后面,这样读取效率絵高很多,避免反复或重复处理。
我过去的作法是,动态查询前针对表或query生成三个视图,第一个存储上次查询取来的记录,第二个是当前取到的记录数据,第三个是一和二视图相比较而得到的最新添加的记录,每次有取动作时,都要刷新。
要点,被查询的主表或query的排序和过滤关键字字段必须是记录号或ID关键字, 保证新记录排在后面,这样读取效率絵高很多,避免反复或重复处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的这个问题其实是数据库事务的相关问题,事务有四性:ACID(原子、一致、隔离、持久),你的问题聚焦在隔离性中。
隔离性分4个等级:更新丢失、脏读、不可重复读(虚读)、不可重复读(幻读)。
每个DB产品的隔离等级是不同的,例如:Oracle数据库=脏读,MySQL innoDB=幻读。
所以针对每个数据库的解决方案不同,但如果非要说一个通用的方案,那就是手动排他锁。
例如,在更新前使用 select * from xxx for update的方法手工添加排他锁,禁止他人修改特定记录。在修改后使用Commit或修改发生异常后使用RollBack释放锁。
--------------------------------------------------------------------------------
但根本的解决之道是:你要熟悉对应DB内部的体系结构,做针对性的方案,否则一味的使用手动上锁(强制事务)的方案会让DB性能骤降,无法满足高并发场景需求。
隔离性分4个等级:更新丢失、脏读、不可重复读(虚读)、不可重复读(幻读)。
每个DB产品的隔离等级是不同的,例如:Oracle数据库=脏读,MySQL innoDB=幻读。
所以针对每个数据库的解决方案不同,但如果非要说一个通用的方案,那就是手动排他锁。
例如,在更新前使用 select * from xxx for update的方法手工添加排他锁,禁止他人修改特定记录。在修改后使用Commit或修改发生异常后使用RollBack释放锁。
--------------------------------------------------------------------------------
但根本的解决之道是:你要熟悉对应DB内部的体系结构,做针对性的方案,否则一味的使用手动上锁(强制事务)的方案会让DB性能骤降,无法满足高并发场景需求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-08-13
展开全部
这种先查后改的问题,通常都会使用加锁来处理
在查询到需要修改的数据后,给这条数据加锁,,阻止其他进程对齐进行修改
然后执行更新,更新结束后释放锁,记得千万给锁设置过期时间,否则一旦你的更新逻辑抛异常,该数据就会被死锁
在查询到需要修改的数据后,给这条数据加锁,,阻止其他进程对齐进行修改
然后执行更新,更新结束后释放锁,记得千万给锁设置过期时间,否则一旦你的更新逻辑抛异常,该数据就会被死锁
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询