`

数据源/数据库连接池/数据库事务解惑

    博客分类:
  • java
阅读更多

  在应用系统和web项目开发中,都会用到数据源、数据库连接池和数据库事务方面的知识。

  今天把这些东西整理一下,部分信息取自于网上文章,作为一个积累。

  

   数据源(DataSource):就是数据存储的地方。

   数据源的用处:主要是方便应用程序访问数据库。数据库会定期的修改密码,有时甚至会更改数据库地址,这样只需要修改一个数据源就可以了,开发人员甚至不需要知道正式数据库密码。

 

  数据库连接池(Data Connection Pool):建立数据库连接池,为了解决资源频繁分配、释放所造成的问题的。提供高效的连接分配,实现连接的高效、安全的复用。避免了数据库连接频繁建立、关闭的开销,避免减低系统的性能。

 

  数据库事务(Database Transaction):数据库事务是指作为单个逻辑工作单元执行的一系列操作。

  数据库事务的ACID属性

  事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性:
  · 原子性
  事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。
  · 一致性
  事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。
  · 隔离性
  由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。
  · 持久性
   事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
DBMS的责任和我们的任务
  企业级的数据库管理系统(DBMS)都有责任提供一种保证事务的物理完整性的机制。就常用的SQL Server2000系统而言,它具备锁定设备隔离事务、记录设备保证事务持久性等机制。因此,我们不必关心数据库事务的物理完整性,而应该关注在什么情况下使用数据库事务、事务对性能的影响,如何使用事务等等。

分享到:
评论

相关推荐

    数据库连接池技术详解

    对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...

    linux C/C++ 数据库连接池

    数据库连接池是一种管理数据库连接的机制,它允许程序重复使用已建立的数据库连接,而不是每次需要时都创建新的连接。这减少了创建和销毁连接的开销,提高了整体系统性能。 在C或C++中实现数据库连接池,通常需要...

    C#高效数据库连接池源码

    数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...

    关于数据库连接池和动态数据源的实现

    数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    常用jdbc数据库连接jar包,数据库连接池jar包

    C3P0通过组合多个数据源来实现连接池,可以更好地控制并发和资源管理。 这些jar包的收集意味着开发者可以快速找到适用于不同数据库的JDBC驱动和连接池实现,无需花费时间在网上搜索和验证资源的可靠性。随着技术的...

    java数据库连接池

    2. 连接重置:在连接返回到连接池时,进行必要的清理和重置操作,如回滚事务、清除缓存等。 3. 动态调整:根据应用负载动态调整连接池的大小,以适应不同的业务需求。 总结,数据库连接池是Java应用中优化数据库...

    03-数据库连接池驱动_数据库连接池;驱动_

    数据库连接池是现代应用程序开发中的重要组成部分,尤其是在处理大量数据交互的应用中,它极大地提高了数据库操作的效率和系统的稳定性。本资源"03-数据库连接池驱动"包含了三种常用的数据库连接池驱动:C3P0、Druid...

    c# mysql数据库连接池实现

    数据库连接池是一种资源管理技术,它预先创建并维护一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕后归还而不是直接关闭,从而减少了频繁创建和销毁连接的开销。在.NET Core中,对于MySQL数据库...

    在WebLogic中建立数据库连接池与数据源及利用JBuilder进行测试

    ### 在WebLogic中建立数据库连接池与数据源及利用JBuilder进行测试 #### 摘要 本文将详细介绍如何在WebLogic Platform 8.1控制台中设置Oracle 9i、SQL Server 和 JDataStore 数据库连接池以及如何在应用程序中获取...

    JAVA数据库连接池

    同时,还需要在代码中加载这些配置文件,并创建数据源实例,然后通过数据源获取数据库连接。 在实际开发中,除了C3P0和DBCP,还有其他流行的数据库连接池,如HikariCP、Druid等。这些连接池各有优缺点,选择合适的...

    配置数据库连接池

    数据库连接池是现代应用程序中管理数据库连接的一种高效方式,它能显著提高系统性能,减少资源消耗。在给定的标题“配置数据库连接池”中,我们可以深入探讨数据库连接池的概念、工作原理,以及如何配置Oracle9i和...

    数据库连接池java代码实现

    数据库连接池在Java中的实现是提高应用程序性能的关键技术之一,它通过复用已存在的数据库连接,避免了频繁创建和销毁连接导致的系统资源浪费。本文将深入探讨如何使用Java代码来实现一个简单的数据库连接池,并解释...

    Apache的数据源及数据库连接池JAR集合.rar

    Apache最新的Dcommons-dbcp2-2.7.0和commons-pool2-2.7.0数据源及数据库连接池Jar包

    数据库连接池使用范例

    3. 在JSP中使用连接池:在Servlet或JSP页面中,通过JNDI查找机制获取数据源并建立数据库连接。例如: ```java Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup(...

    普元平台使用阿里druid数据库连接池的配置说明20171010.docx

    普元EOS开发平台默认数据源支持jndi、c3p0,但其性能较差,改用阿里巴巴Druid数据库连接池可以提高性能。下面是配置阿里Druid数据库连接池的步骤和说明: 1. 通过 governor,将数据源修改成 JNDI 数据源,保存即可...

    数据库连接池c3p0jar包

    4. 通过数据源对象获取数据库连接。 5. 使用获取的连接执行SQL操作,完成后归还连接。 例如,以下是一个简单的Java配置示例: ```java import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0...

Global site tag (gtag.js) - Google Analytics