为什么控制SQL如此重要

许多博客文章研究论文都写了关于扩大规模和扩大规模的主题。 例如, 这篇有趣的博客文章从物理维护成本(例如冷却和电力消耗)方面阐明了这两种策略。 对于大型系统,当然是不可忽略的方面。

但是,在大规模解决问题之前,请考虑更简单的SQL调整机制。 通常,当您的应用程序遇到瓶颈时,它就在数据库层。 许多NoSQL宣传人员使用此事实来推广他们的产品,声称使用NoSQL数据库进行扩展要容易得多。 这可能是对的,但请问自己:您是否需要一个在高负载下工作的系统? 还是您的瓶颈是性能瓶颈?

换句话说:您有5'000'000个并发用户问题吗? 还是您有一个请求时间超过3秒的问题? 因为如果您遭受后者的困扰,则可能不需要横向扩展也不需要扩展。 您的“传统”架构可能还不错,但您的数据库/ SQL查询却不是。 受欢迎的use-the-index-luke.com网站上有一篇有趣的文章,介绍了由ORM工具引起的两个顶级性能问题 。 他们是:

  • 臭名昭著的N + 1选择问题
  • 鲜为人知的仅索引扫描

这两个问题都是由于流行的ORM以几乎不受开发人员影响的方式生成SQL代码而导致的。 人们经常声称,像Hibernate这样的工具所产生的SQL比普通开发人员要好 。 在某种程度上,这是正确的,即普通开发人员可能从不关心实际学习编写更好的SQL。 进而导致上述问题。

Hibernate非常擅长生成应用程序无聊的CRUD SQL的70%。 同时,Hibernate从未声称可以替代SQL,因为您将不得不在30%的时间内使用本机SQL。 然后应该使用Hibernate的本机SQL API吗? 还是jOOQ这样的替代

重要的是,当性能很重要时,要重新控制SQL。 了解您的索引了解您的数据库元数据 。 并使用允许您精确编写所需SQL语句的工具。 学习更好的SQL可以帮助您节省大量运营成本,因为您可能不需要横向扩展也不需要扩展。


翻译自: https://www.javacodegeeks.com/2013/11/why-staying-in-control-of-your-sql-is-so-important.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值