【问题标题】:Use of Teradata for OLTP operation with java web application使用 Teradata 进行 Java Web 应用程序的 OLTP 操作
【发布时间】:2014-05-22 20:39:16
【问题描述】:

Is Teradata 建议用于 Java Web 应用程序的 OLTP 操作。休眠是将 ORM 层与 Teradata 一起使用的好选择吗?请提出建议。

【问题讨论】:

    标签: java performance hibernate teradata


    【解决方案1】:

    我不确定这个建议,但我曾在其中使用 TD 进行事务操作的应用程序中工作过,并且在进行负载测试时,我们发现了一些性能问题。我们也参与了 TD 团队,并且了解到引用完整性是 TD 放大器操作的开销。 所以,我个人认为,如果你想在 TD 中实现 OLTP 操作的并发性,那么就要在性能上妥协。

    【讨论】:

      【解决方案2】:

      老实说,Teradata 不会是我对 OLTP 应用程序的首选:恕我直言,它的优势在于其他场景。 并不是说不可能做这样的应用程序,而是从一开始就需要最大程度地注意避免陷入其他用户已经提到的陷阱(阻塞、死锁等)

      我也怀疑 Hibernate 的普通用法是否适合 Teradata OLTP 应用程序:您可能会发现您必须强制 Hibernate 以“非标准”方式运行(但我承认我总是喜欢提供我完全控制我的 SQL)。

      我们在类似 Teradata OLTP 的应用程序中使用的一些提示。

      1. 争取单 AMP 查询(这可能会改变有关如何为数据库建模的方法,有利于少数“强实体”)。
      2. 尽可能多地使用缓存:Teradata 连接是一种宝贵的资源,您最好不要将其用于不需要实时的信息
      3. 尽可能多地分组数据:如果您可以让一个查询返回所有信息,请避免执行三个单独的查询
      4. 对于Java中的批量插入,将目标表的主索引列保持为数字(似乎在唯一数字主索引上分布更好,而不是在唯一字符串主索引上,这对锁定有影响)
      5. 避免大型数据集的“分页”界面(前“n”页使用“top”,然后要求用户更好地限定他的搜索)
      6. 支持“宏”而不是“存储过程”
      7. 检查您的锁定要求:您最终可能会使用大量“LOCK ROW FOR ACCESS”修饰符(打开“脏读”的可能性,但在某些情况下可能是必要的)

      【讨论】:

      • Insac 你说的很对,最后,在面对 Teradata 与 OLTP 应用程序的许多问题后,我们不得不求助于 Oracle。
      【解决方案3】:

      我们的团队也在努力证明 teradata 是 OLTP。在将 teradata 用于 OLTP 时,您需要注意很多事情,我们经常面临阻塞、死锁和性能问题。我们需要更多地了解 teradata 锁定机制和并发访问。我们的应用程序也完全使用 TD 休眠。 Teradata 将支持多语句概念,这意味着您可以在单个查询中执行多插入/更新。如果您要休眠,那是不可能的。 Hibernate 作为 ORM 有自己的优势。但是当涉及到 Teradata 时,我们需要退一步思考。

      【讨论】:

      • 感谢阿伦的解释。您能否说明您在以 OLTP 方式使用 Teradata 时为防止死锁和阻塞而采取的任何具体措施。
      猜你喜欢
      • 2017-05-30
      • 1970-01-01
      • 2023-03-20
      • 2014-05-24
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 2010-11-17
      • 2011-06-24
      相关资源
      最近更新 更多