数据库事务

zhushican | 建站教程 | 2014年8月18日

在数据库系统中,例如SQL Server,我们通过在一个存储过程内部使用一个特定卖主的语句来指定事务的操作,例如使用BEGIN TARNSACTION语句来启动一个新事务。使用COMMIT TRANSACTION语句接受对数据所做的全部更新,并且一直允许对数据进行修改,使用ROLLBACK TRANSACTION语句取消当前事务中所做的任何修改。

DoBookArchive的存储过程是在SQL脚本,在数据库WroxBooks内部创建的。这个存储过程的功能就是将表BookList中的一行移动到同一个数据库中的一个名为ArchiveBooks的表中。如果该过程成功完成,该事务被提交,并且更新后的结果将永远应用在数据库表中。如果向ArchiveBooks表中写入时,或是从BookList表进行删除的操作时出现了错误,这两个动作都会回退,这个表也保持为原来的状态,任何一个都没有受到这个过程的影响。
 
但是,这个过程总是以删除表中已有的具有相同ISBN开始。如果整个事务失败,这个动作将会被回退,因此如果记录已经存档(已从表中删除),利用相同的ISBN运行这个存储过程时,它就不会被从表中删除。在在这种情况下,INSERT语句就会失败,因为该记录没有在表中,因此整个事务就会回退,从而撤销对表的DELETE操作。

[阅读全文]
10次浏览 0条评论 数据库  事务  

浅谈数据库的结构优化

zhushican | 建站教程 | 2014年6月20日

   对数据库的优化一直是很多大型网站运营过程中必须应对的重要问题。比如,在2012 年3 月底本人有参与开发了一个A省的省级的政务信息公开发布系统,经过了4个月的功能开发和测试之后,该系统正式上线了,由于该系统采用的是地区分站模式,按照“省-市-县-镇-村”的站点模式,由政府主导,该系统在A省的所 有地区很快就开始推广使用,随着每日发布的政务公开信息逐步增加,结果2个月之后,发现系统曾出现过慢查询的问题。按照初步计算,A省共有15000多个 行政村,1200个镇,100个县与9个市,假设每个村、镇、县、市、省每日发布信息各10条,那么每日的信息发布数量将达到 (15000+1200+100+9+1)*10=163100条数据,那么1个月的数据量将达到163100*30=4893000︾5000000, 那么两个月将达到10000000条,一年将达到上亿条的数据量。面对着这么大的数据量,查询效率也会成为系统的一个性能的瓶颈。

[阅读全文]
16次浏览 0条评论 数据库  结构优化  
回顶部