Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在内存中加载数据库_Java_Mysql_Sql_Performance_Select - Fatal编程技术网

Java 如何在内存中加载数据库

Java 如何在内存中加载数据库,java,mysql,sql,performance,select,Java,Mysql,Sql,Performance,Select,我的程序的性能有问题。我有一个java程序连接到MySql数据库,并执行一些依赖于对数据库执行SELECT查询的过程。 现在的问题是,我的进程程序必须在mySql上执行130000 select查询,这需要很长时间。 我有10分钟的时间做所有的事情。 你知道如何在10分钟内最多执行130000个select查询吗 一种方法是使用内存数据库,如H2或HSQL。只有当您可以将数据预加载到内存中时,此解决方案才会起作用。许多其他因素也需要考虑,如数据量、数据库中数据的变化频率等。 如果这是可能的


我的程序的性能有问题。我有一个java程序连接到MySql数据库,并执行一些依赖于对数据库执行SELECT查询的过程。
现在的问题是,我的进程程序必须在mySql上执行130000 select查询,这需要很长时间。
我有10分钟的时间做所有的事情。

你知道如何在10分钟内最多执行130000个select查询吗

一种方法是使用内存数据库,如H2或HSQL。只有当您可以将数据预加载到内存中时,此解决方案才会起作用。许多其他因素也需要考虑,如数据量、数据库中数据的变化频率等。 如果这是可能的,那么您可以直接在内存中查询,这通常会更快

  • 确定要加载到内存中的重要数据
  • 在内存数据库中创建相应的表结构,如H2或HSQL
  • 从实际的MySQL中加载这些数据,并将其插入内存数据库中
  • 在数据库中启动查询
  • 你知道如何在10分钟内最多执行130000个select查询吗

    这是每秒200个查询,对于简单的查询应该是可行的。然而,最简单的解决方案可能是用一个单一的查询来代替它们,该查询加载所有需要的数据(您已经假设它适合内存)并在Java中进行处理


    由于
    HashMap
    比任何数据库都快几个数量级,因此任务将变得微不足道,您的机器会感到厌烦。

    请发布一些数据结构。一般来说,添加适当的索引有助于加快查询速度。130000次选择太多了,你确定你真的需要这么多吗?我会尽量优化我的逻辑来降低这个数字。无意冒犯,但特别是mysql用户可能在SQL方面没有太多专业知识,并试图以低效的方式解决问题。你能详细说明一下实际的选择吗?@dnoeth我有一个带有前缀“12”、“120”、“1201”的节点树,“1202”等。我需要使用select查询来获取每个节点的父节点并生成树。换句话说,我编写了一个select查询,对每个节点执行该查询,返回节点的父节点,并将父id保存在节点中。现在,我的树有130000个节点,我必须执行130000次select查询。您似乎需要某种递归,mysql不需要支持递归查询。但是每个递归都可以使用WHILE循环重写,mysql中有存储过程。如果已知树中的最大级别,则可以通过一次选择来完成此操作。你能展示现有的SELECT+Java逻辑吗?@Punkbf不只是在评论中回答(它们消失了),你的问题要包括所有必要的信息。并添加数据结构和查询。我的朋友。你的方法在我心目中非常接近解决方案。但你能详细解释一下如何做到这一点吗?真的使用hsql或h2可以在10分钟内执行130000个select查询吗?你可以编写一个测试用例并进行测试。我没有试过。但我用的都是超音速的,符合我们的要求。