AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 10776
Accepted
DeepSpace101
DeepSpace101
Asked: 2012-01-17 23:34:29 +0800 CST2012-01-17 23:34:29 +0800 CST 2012-01-17 23:34:29 +0800 CST

如何扩展 SQL Server 2008 或 2012?

  • 772

如何扩展 SQL Server 2008(或 2012)?基本上,我知道有两种选择:

放大:

如果 CPU 受限,我可以清楚地看到从 1 个 CPU 核心到 2 到 4 个。或者如果 RAM 使用量猛增,只需添加更多 RAM。假设没有应用程序级别的更改,SQL Server 2008/2012 是否真的可以弥补不足并以这种方式扩展?为了尽量减少猜测,假设我没有做一些愚蠢的事情,比如消耗 CPU 周期、进行交叉连接等。

向外扩展:

目前还不清楚向外扩展将如何工作。我的意思是,如果我在第一个 SQL 服务器旁边添加了另一个 SQL 服务器,查询如何知道要在哪个服务器上运行?前面是否有一些负载平衡器(它是否随 SQL Server 软件提供?)?它是否需要更改应用程序级别才能向外扩展?或者我是否必须对数据进行分片并拥有根据数据分片键调用正确数据库服务器的自定义代码?

希望有经验的人提供意见。

sql-server scalability
  • 3 3 个回答
  • 9927 Views

3 个回答

  • Voted
  1. Best Answer
    gbn
    2012-01-18T06:07:47+08:002012-01-18T06:07:47+08:00

    SQL Server 不会像这样向外扩展。它扩大规模。

    有 3 个方面可以做到这一点,受版本限制

    • CPU内核
    • 内存
    • 贮存

    当然,使用更高版本,例如 Enterprise

    SQL Server 不分片,任何此类解决方案(您可以研究 MySQL 分片解决方案)都会增加系统的复杂性和开销。

    使用 RAM、SSD、更多磁盘卷来传播 IO、用于 tempdb 和日志的单独驱动器等扩展一台服务器(+ 备用节点/镜像)通常非常简单

    此外,如果您发现 SQL Server 受 CPU 限制,那么它通常是糟糕的设计和/或索引和/或编写不佳的查询,除非您有大量负载。

    • 10
  2. datagod
    2012-01-18T11:51:47+08:002012-01-18T11:51:47+08:00

    就像 gbn 所说,SQL 并没有像其他 RDBM 那样真正横向扩展。但是,许多人忽略了横向扩展的一个方面,那就是始终有一个单独的系统用于报告目的。

    永远不要让报告针对生产运行。在另一台服务器上为自己构建一个报告数据库。

    理想情况下,您的报告系统将仅包含报告所需的数据,并且其结构和优化方式与您的生产系统不同。

    数据将根据需要输入到报告系统中(即每小时从生产、每日馈送等中进行的涓涓更新)。

    一种快速而肮脏(且效率极低)的方法是在另一台服务器上简单地拥有生产数据库的完整副本。该副本可以通过完整备份、事务日志传送、镜像(带快照)、复制等来维护。

    但是我不推荐这种方法。完全备份和恢复需要时间,尤其是在较大的数据库上。复制是复杂且有问题的。日志传送为您提供只读数据库。使用快照进行镜像可能是一个很好的答案,但您仍然会遇到未针对报告目的进行优化的生产模式。

    一个单独的报告系统是要走的路。

    • 5
  3. syneticon-dj
    2012-01-18T03:35:28+08:002012-01-18T03:35:28+08:00

    如果 CPU 受限,我可以清楚地看到从 1 个 CPU 核心到 2 到 4 个。或者如果 RAM 使用量猛增,只需添加更多 RAM。假设没有应用程序级别的更改,SQL Server 2008/2012 是否真的可以弥补不足并以这种方式扩展?

    不同版本的SQL Server在它们要使用的 CPU 和内存方面有不同的限制。但除此之外,答案是肯定的——如果有空闲的 CPU 周期或内存页可用,服务器通常会在需要时使用它们,除非另有配置。

    或者我是否必须对数据进行分片并拥有调用正确数据库服务器的自定义代码

    基本上,是的。当您需要避免锁争用时,通常会进行“横向扩展”。如果您有大量锁定的长时间运行的查询,您可能希望将这些查询与“实时”交互式查询或由用户操作某种界面并等待及时响应启动的查询更新周期分开。显然,解决这个问题需要更改应用程序(或至少更改中间件,如果您有 3 层设计)。

    • 2

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve