【问题标题】:How many data did SQL Server affordable?SQL Server 负担得起多少数据?
【发布时间】:2015-11-18 02:52:49
【问题描述】:

数据库:SQL Server 2014 Standard 或更高版本;

服务器:MS Azure,没有限制的 CPU 和 RAM

我们想设计我们新的后端架构,我们在一个表中大约有 2000 万个,SQL 可能喜欢:

select * from xxxx
where (type=1 or type=2 or type=3) and someNumber<5000
order by xxxxxx

SQL 与其他表没有任何关系。 这个 SQL 能立即响应吗? (在 500 到 1000 毫秒内)

当数据增长到 1 亿时,还能负担得起吗?

或者有什么技巧可以优化呢? (如 sql 视图、缓存...等)

【问题讨论】:

  • 这取决于您查询数据的方式以及创建的索引。哈希索引查找应该很容易处理 1 亿行,排序操作将需要很长时间,除非您已经为该特定排序顺序提供了排序树索引。

标签: sql sql-server database relational-database


【解决方案1】:

SQL Azure 应该适合您。我在 SQL Azure 上有数据库,在一个表中包含超过 2.5 亿条记录,该表是一个标准 2 层数据库,不是很贵。如果您有良好的索引和简单的查询,它将正常工作。最终,您应该创建一个数据库并尝试一下。

您还可以使用表分区,这可以帮助一些人提高性能和管理如此大的表。

在 Stackify,我们在 SQL Azure 上为我们的多租户 SaaS 产品管理 1,000 多个数据库。

【讨论】:

    【解决方案2】:

    你的查询可以更容易地写成:

    select *
    from xxxx
    where type in (1, 2, 3) and someNumber < 5000
    order by xxxxxx;
    

    这很难优化。您可以在xxxx(type, someNumber) 上尝试索引。这个索引在这个版本的查询上会更好地工作:

    select *
    from ((select * from xxxx where type = 1 and somenumber < 5000) union all
          (select * from xxxx where type = 2 and somenumber < 5000) union all
          (select * from xxxx where type = 2 and somenumber < 5000)
         ) x
    order by xxxxxx;
    

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2011-11-02
      • 2021-10-18
      相关资源
      最近更新 更多