gpt4 book ai didi

mysql - 我们使用 JDBC+XMLRPC+Tomcat+MySQL 来执行潜在的大型 MySQL 查询。什么是更好的方法?

转载 作者:行者123 更新时间:2023-11-29 03:47:21 24 4
gpt4 key购买 nike

我正在开发一个基于 Java 的项目,该项目有一个客户端程序需要连接到远程服务器上的 MySQL 数据库。这是实现如下:

使用 JDBC 编写要执行的 SQL 查询,然后使用 Apache Tomcat 作为 servlet 托管,并可通过 XML-RPC 访问。客户端代码使用 XML-RPC 远程执行这些基于 JDBC 的功能。这使我们能够保持 MySQL 数据库的非公开性,限制对预定义函数的使用,并允许 Tomcat 管理数据库事务(有人告诉我这比让 MySQL 单独完成要好,但我真的不这样做)不明白为什么)。然而,这种方法需要大量的样板代码,而且 Tomcat 是我们服务器上的一个巨大的内存消耗。

我正在寻找一种更好的方法来做到这一点。我正在考虑的一种方法是使 MySQL 数据库可公开访问,将基于 JDBC 的代码重写为存储过程,并限制公众只能使用这些过程。我看到的问题是,将所有 JDBC 代码转换为存储过程既困难又耗时。我也不太熟悉 MySQL 的权限。是否可以授予对在表上执行 select 语句的存储过程的访问权限,同时拒绝在同一个表上执行任意 select 语句?

欢迎任何其他想法,以及对存储过程解决方案的想法和/或建议。

谢谢!

最佳答案

您可能只需花费几天的开发时间就可以升级服务器的 RAM,因此如果您从练习中得到的只是这些,请不要编写任何代码。另外,仅仅因为内存在tomcat内部使用,并不意味着tomcat本身正在使用它。内存可能被数据或代码中的技术缺陷耗尽。

如果您已经尝试过额外的 RAM 并且它正在被吃掉,那么这听起来像是一个编码问题,所以我建议使用分析器或记录数据来尝试找出根本原因是什么,然后再进行任何更改.如果原因是大数据集,那么直接使用数据库只会延迟不可避免的事情,相反你需要考虑分页、汇总、客户端缓存或重新设计客户端以减少昂贵查询的使用。使用探查器或简单地查看代码库,也会告诉您是否有东西创建了太多对象(尤其是字符串或 XML 节点)或内存泄漏。

可以通过创造性地重构来避免样板代码,避免重复是有好处的。目前还不清楚您可能已经拥有多少结构,但只要稍作工作,就可以轻松集中样板 JDBC 调用。没有根本原因应该重复 JDBC 代码,也许您可​​以告诉我们重复了哪些代码?

最后,我敢说有很多很好的理由可以在您的数据库上放置一个 Web 层。灵 active (部署)、兼容性、控制(通过 SQL)和安全性都是保留 Web 层的充分理由。

关于mysql - 我们使用 JDBC+XMLRPC+Tomcat+MySQL 来执行潜在的大型 MySQL 查询。什么是更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com