java - 并行调用mysql数据库时的注意事项

标签 java mysql database parallel-processing connector-j

我必须第一次创建一个供多个应用程序并行使用的 mysql 数据库。到目前为止,我对 mysql 数据库的唯一经验是查询数据库的单个程序(例如网络服务器)。 现在我正在进入一个场景,其中我将有几个 CXF java servlet 类型程序,以及在相同模式上编辑和读取的后台服务器。 我在所有实例中都使用 Connector/J JDBC 驱动程序连接到数据库。

我的问题是:我需要做什么才能确保并行访问不会成为问题。我意识到我需要在适当的情况下使用事务,但我真正迷失的是管理。 例如。 每次 servlet 完成工作时是否需要关闭连接? 每个访问数据库的程序都需要一个唯一的用户吗? 我是否必须对 Connector/J 对象执行某些操作? 我是否必须以不同的方式声明我的表格? 我错过了什么或者有什么我没有想到的吗? 我对如何处理事务和 SQL 本身有一个很好的想法,但是当涉及到设置数据库时需要做什么时,我非常迷失。

最佳答案

您应该维护一个连接池。创建大约几百毫秒的连接确实非常昂贵。因此,对于大容量应用程序来说,缓存和重用它们是有意义的。

对于您的 servlet,这取决于您使用的容器。像 JBoss 这样的东西将提供池作为容器的一部分。可以通过数据源定义来定义并通过JNDI访问。其他容器(例如 tomcat)可能依赖于 C3PO 之类的东西。

这些框架中的大多数返回 JDBC 连接的自定义实现,这些连接实现 close() 方法以及将连接返回到池的逻辑。您应该熟悉具体实现的细节,以确保您正在以受支持的方式做事

对于并发性的考虑,您应该熟悉乐观/悲观锁定和事务隔离级别的概念。这些都需要权衡,只有在给定应用程序的操作上下文的情况下才能确定正确的答案。

考虑到用户,大多数应用程序都有一个代表该应用程序的用户,称为读/写用户。该用户应该仅具有从与您的应用程序关联的表、索引、序列等中读取和写入记录的权限。应用程序的所有实例都将在其连接字符串中指定该用户。

如果您熟悉上述概念,那么您就已经成功了 95%。

还有一件事。正如管理方面的评论所指出的,您的数据库引擎是一个巨大的考虑因素。您应该熟悉差异和调整/配置选项。

关于java - 并行调用mysql数据库时的注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323259/

相关文章:

java - JVM 是否将内存分配给值为 null 的本地引用变量

java - Circle In Rectangle 打包算法

java - 如何通过 spring 集成来管道化 amqp 队列?

database - 如何备份和恢复一个PostgreSQL数据库?

java - 是否可以指定多个电子邮件地址来接收退回邮件?

mysql - 计算不同折扣范围的产品

PHP 和 MySQL 工作台

php mysql 在 URL 中删除单词 GET ERROR

php - SQL命令从数据ID在两个表中的表中删除

mysql - 连接表性能的 ORDER BY 列