我必须创建一个mysql数据库,以便第一次并行使用多个应用程序。到目前为止,我对mysql数据库的唯一体验是查询数据库的单个程序(例如web服务器)。 现在我进入一个场景,我将有几个CXF java servlet类型程序,以及后台服务器编辑和读取相同的模式。 我使用Connector / J JDBC驱动程序在所有实例中连接到数据库。
我的问题是:我需要做些什么才能确保并行访问不会成为问题。我意识到我需要在适当的时候使用交易,但我真正迷失的是管理层。 例如。 每次servlet完成一项工作时,我是否需要关闭连接? 我是否需要为访问数据库的每个程序提供唯一的用户? 我必须对Connector / J对象做些什么吗? 我是否必须以不同的方式声明我的表格? 我错过了什么,还是有什么我没想到的? 我对如何处理事务和SQL本身有一个很好的想法,但是在设置我的数据库时我需要做的事情我很遗憾。
答案 0 :(得分:2)
您应该维护一个连接池。在几百毫秒的数量级上创建思考连接真的很昂贵。因此,对于大批量应用程序,缓存和重用它们是有意义的。
对于您的servlet,它取决于您使用的容器。像JBoss这样的东西会提供池作为容器的一部分。它可以通过数据源定义定义,并通过JNDI访问。像tomcat这样的其他容器可能依赖于像C3PO这样的东西。
这些框架中的大多数都返回JDBC连接的自定义实现,这些实现使用返回池连接的逻辑来实现close()方法。您应该熟悉具体实现的细节,以确保以支持的方式执行操作
对于并发性考虑,您应该熟悉乐观/悲观锁定和事务隔离级别的概念。这些都有权衡,正确的答案只能根据您的申请的运作环境来确定。
考虑到用户,大多数应用程序都有一个用户代表称为读/写用户的应用程序。此用户应该只具有从与应用程序关联的表,索引,序列等中读取和写入记录的权限。应用程序的所有实例都将在其连接字符串中指定此用户。
如果您熟悉上述概念,那么您将大约95%的方式。
还有一件事。正如在管理方面的评论中所指出的,您的数据库引擎是一个巨大的考虑因素。您应该熟悉差异和调整/配置选项。