Java servlet中的重复语句-最佳实践?

Java servlet中的重复语句-最佳实践?,java,mysql,tomcat,Java,Mysql,Tomcat,我正在编写一个TomcatServlet,它需要处理一些高流量,我一直在想,如果我在init打开一个(或多个)连接并准备语句,而不是在GET或POST请求期间,是否可以使我的Servlet性能更高 我担心的是,如果连接丢失,这会使事情变得非常复杂,使恢复更加困难,在最坏的情况下,如果最大连接数耗尽,服务器将完全停止运行 因此,我不确定我的思路是否正确。在这种情况下,存储过程是更好的方法吗 你的第一步应该是弄清楚你想要什么。如果你想“更快”,你需要衡量你现在拥有的东西,以便可以衡量可能的改进,看看

我正在编写一个TomcatServlet,它需要处理一些高流量,我一直在想,如果我在init打开一个(或多个)连接并准备语句,而不是在GET或POST请求期间,是否可以使我的Servlet性能更高

我担心的是,如果连接丢失,这会使事情变得非常复杂,使恢复更加困难,在最坏的情况下,如果最大连接数耗尽,服务器将完全停止运行


因此,我不确定我的思路是否正确。在这种情况下,存储过程是更好的方法吗

你的第一步应该是弄清楚你想要什么。如果你想“更快”,你需要衡量你现在拥有的东西,以便可以衡量可能的改进,看看它们是否真的有所改进

下一件事是找出你想要更快的东西——你似乎在问“哪里可能是速度上最好的改进”,而没有向我们展示任何代码

我建议您花一点时间找出代码花费的时间最多的地方,以便找出需要改进的地方。这可能和使用JVisualVM(和JDK捆绑在一起)或一些日志语句一样全面


一旦你确定了快赢在哪里,你就可以问一个更有针对性的问题,关于如何让它更快。如果您不使用数据源(连接池),这几乎肯定会是一个巨大的改进——网络连接既昂贵又缓慢

在我看来,你最好使用DBCPI,如果你使用一个连接池和
PreparedStatement
s,这差不多就是你能做的了。除非您想处理某种池机制,否则不能预分配这些
PreparedStatement
s,因为
PreparedStatement
s不是线程安全的(也不是任何其他与JDBC相关的类)。