Database Hibernate中的本机查询性能
很明显,hql查询比本机查询慢。脑海中有一个项目将使用大量的小事务来执行。所以问题是什么会表现得更好:Database Hibernate中的本机查询性能,database,hibernate,jpa,Database,Hibernate,Jpa,很明显,hql查询比本机查询慢。脑海中有一个项目将使用大量的小事务来执行。所以问题是什么会表现得更好: jpa中的本机查询 通过jdbc的本机查询 差别有多大?因为jpa映射功能和准备好的语句更喜欢它。但根据性能要求,hibernate可能不够快 编辑 将“需要处理的大量数据”替换为“需要执行的大量小型事务” 你提供的信息太少了 需要处理的数据量巨大 那有多大?比如说1000万条只有100G的记录 您计划如何处理这些数据?如果您通过Hibernate(或本机查询或jdbc)将其拉到Java
- jpa中的本机查询
- 通过jdbc的本机查询
- 那有多大?比如说1000万条只有100G的记录
- 您计划如何处理这些数据?如果您通过Hibernate(或本机查询或jdbc)将其拉到Java端,那么您可能走错了方向。您应将数据保存在数据库中,并使用数据库提供的工具在数据库中进行处理,并且光年的性能比任何客户端处理都高。考虑数据库侧处理(Oracle的PL/SQL、MS SQL Server的Transact-SQL)。
- 您计划优化什么?数据插入?数据检索?您是否计划使用select语句来挖掘大量数据?然后考虑OLAP解决方案的经典OLTP。OLAP解决方案是为商业智能和通过一些巧妙的技巧分析巨大的千兆字节数据而构建的。Google for it(OLAP、决策多维数据集)
- 您可以使用底层SQL引擎的任何功能吗?例如,如果您使用的是Oracle,那么您可以使用的功能比Hibernate中实际使用的功能多1000倍。例如,您只是无法在Hibernate中进行Oracle文本查询,而且确实有很多事情您无法完成
- Hibernate的强大功能在于:只处理很少的数据记录,优化地将其本地缓存在Java端,作为为无法进行数据处理的数据库构建的数据处理系统的基础。(但仅适用于某些选择、插入、更新和删除)
- 一旦您确实必须移动大量数据,Java端处理就不是一个选项。80年代的程序员正是因为这个原因才发明了存储过程。选择一个支持数据库端处理的数据库,以缩短所有网络往返,并在java代码中使用for循环进行命令式数据处理。而是尽可能多地使用声明式SQL,并在数据库上运行处理李>
- 一旦您准备开始使用数据库的功能,Hibernate将成为您的主要障碍。它实际上是作为一个ORM包装器构建的——然而,数据处理问题并非一直都是CRUD和ORM问题。例如,Hibernate对于OLAP用例并不太有用
- 从序列中选择一个新id
- 执行一次插入
- 重复无数次
我发现,如果我想挤出你的大多数工具,我需要深入学习它们。不幸的是,你可以找到很多基于观点的评论,特别是在网络上的Hibernate与非Hibernate战争中。大多数评论都是由Java开发人员编写的,他们根本不知道幕后会发生什么。因此,不要相信-度量:)我不是数据库专家,我在寻找一些关于在哪里查找以及应该查找什么的提示。谢谢但还有一件事。如果我转换一些有问题的词语,告诉你我需要执行大量的小交易。在这种情况下,什么会更好?问题已更新。首先查找JDBC批处理模式,然后检查数据库是否允许异步提交()。注意在每100或1000条记录之后实际提交一次,否则您将填充回滚段(从您的角度看,这看起来像是数据库减速)。