用于生产数据库的SQL Server Express?


14

我们将推出一个双重Web /内部事务应用程序,其中每个客户端都有自己的数据库。每个数据库都很小-每个数据库都小于50MB,因此我们想知道使用SQL Express 2008而不是完整的SQL Server是否有意义。

这似乎具有在服务器之间分配磁盘I / O的优点,同时又节省了大量资金(因为小型15K驱动器和二手双核服务器都不便宜)。如果在某个时候我们需要太多服务器,则可以升级到SQL Server ...但是,由于有许多内部用户,这现在似乎太昂贵了(特别是因为我们需要故障转移盒)。

鉴于我们的数据库规模较小,在单个处理器上使用1GB内存和4个内核的使用听起来似乎不太严格。我们永远不会有超过200个并发用户,并且大多数操作将更具事务性(这似乎比重载RAM / CPU更青睐大量的高速磁盘,对吗?)

我是否错过了SQL Server Standard的任何优势,这些优势最初可以证明额外的$ 5-20K投资?

Answers:


17

其他版本的SQL Server为您提供SQL代理之类的功能,因此您可以安排数据库维护和其他作业。

只要您的数据库可以满足Express版本的限制,就可以了。

SQL Server喜欢大量的RAM。越多越好。由于SQL Server无法将数据加载到缓存中,因此会在磁盘上增加额外的负载。您应该查看SQL Server的Web版或工作站版。这些版本比Express版本具有更高的限制,但价格低于Standard Edition。

如果确实从Express版本开始,则在购买许可证后始终可以稍后再升级到Standard Edition。


+1无法添加任何其他内容
尼克·卡瓦迪亚斯

我认为工作组和网络版许可证不能用于外部托管的业务应用程序。
阿卡什·卡瓦

1
CPU许可证适用于所有版本(不需要CPU许可证的Express除外),这意味着您可以将其用于面向公众的网站。这是工作组CPU许可bit.ly/KDLDR的链接。我无法轻松找到Web Edition,但是任何VAR都应该能够提供它而无需四处寻找。
mrdenny

我还建议从Express之上的内容开始,有时很难从Express过渡到任何其他版本。
DanBig

3
SQL Express与其他版本完全相同,但有大小限制。从Express迁移到另一个版本仅是将数据库与Express版本分离,并将其附加到运行另一个版本的另一个实例上。
mrdenny

15

我在Express版中遇到的一些生产问题和解决方法:

预定备份

SSIS

剖析


2
  1. 如果您阅读《 SQL Server许可证》,则如果被动服务器仅用于故障转移,并且不需要在第一个服务器出现故障之前提供查询,则无需为被动服务器购买其他许可证。

  2. 我们使用SQL Server Express已有很长时间了,它的性能比以前的MSDE好而且要好得多,我们有200多个模拟连接,但是我们只有一个大小为2GB的数据库,一切都很顺利。只要我们避免使用昂贵的联接并且我们进行良好的索引编制,我们就不会有任何问题。现在我们正在使用SQL Standard,但是直到您的数据库大小大于4GB并且用户数量小于200-500,您肯定可以使用SQL Express。

  3. SQL Server Express使用的内存占用量较少,约为200MB,而标准版仅占用约1.5GB,这可能是因为标准版会进行大量的缓存。与标准版相比,在Express中查询的速度会在几毫秒内变慢。不幸的是,Express Edition没有使用多核cpus(这是有限的功能),因此,无论是2核还是4核都不会有太大帮助。


我以为SSE ​​2008使用了多核(最多4个)?
发出哔哔声

@LuckyLindy Standard将最多使用4个套接字,每个套接字具有许多核心。
mrdenny

“但直到您的数据库大小超过4GB为止”,每个实例的限制为4GB。我不记得有限制所使用的实例数量
根纳季瓦宁ГеннадийВанин

2

LuckyLindy-我鼓励您停下来一秒钟,并确认您不需要SQL Agent。你写了:

我们将推出一个双重Web /内部事务应用程序,其中每个客户端都有自己的数据库。每个数据库都很小-每个数据库都小于50MB,因此我们想知道使用SQL Express 2008而不是完整的SQL Server是否有意义。

您的备份计划是什么?您不必使用SQL Agent,但可以确保DBA的工作更加轻松。您可以编写T-SQL / SMO / PowerShell /执行备份的所有脚本,然后使用计划任务通过sqlcmd或PowerShell执行。

您的数据库维护计划是什么?随着时间的流逝,将需要对这些数据库进行碎片整理并检查其一致性。Standard Edition提供了各种便利来简化此过程,而在Express中,您必须进行工作(再次执行脚本和计划的任务)。

如何将服务器上的问题通知您?代理在此处通过警报帮助您,以在日志已满,磁盘已满等时通知您。


这些是关键的SQL Server DBA类型任务。为内部应用程序运行Express是一回事,但是一旦您开始告诉我们要为客户托管这些应用程序,我就会很担心:)


其中的第二部分是询问您计划在启动时和一年后支持多少客户?如果您说“ 100个客户端”,那么Express上100个50MB数据库将不够用-您只是没有足够的内存。哎呀-我不知道,取决于您有多少增量,您最多可以达到15个DB。

我们永远不会有超过200个并发用户,并且大多数操作将更具事务性(这似乎比重载RAM / CPU更青睐大量的高速磁盘,对吗?)

诸如INSERT之类的事务性操作仍会写入内存,因此不要指望您需要更少的内存支持。实际上,根据您执行的INSERT数量,您可能比使用该数量的大多数用户具有更大的内存需求。如果您要加载很多人们实际上不会使用的数据,那么它仍然会占用内存。您可能会遇到“用户经常查询的数据”和“用户正在加载的数据,一段时间内没人会查询”之间的争用问题。SQL通过保留人们在内存中更频繁查询的数据更长的时间来保护我们,但是您仍然会遇到争用。

在这一点上,我正在大声笑。200名并发用户也都不喜欢Express。假设平均连接内存需求为64k,您的应用程序将建立多少个连接?您将使用连接池吗?

总而言之,通过阅读您的描述,我的直觉告诉我:“否-Express Edition不够强大。” 我讨厌工作组版-认为这很不好-所以Standard在我看来似乎很对。


2
斯科特-好的答案。就您的观点而言……SQL Server Express实际上没有跨数据库的存储大小限制,您无法拥有一个具有超过4GB数据的数据库。作为测试,我在一台服务器上创建了10,000个100MB数据库(1TB),SQL Server Express运行良好。另外,与每个连接有关的内存也不计入1GB的总内存中。我确实同意管理所有这些数据库可能会有些麻烦...但是由于实际上我们将拥有1000个数据库,因此无论如何我们都可能需要脚本(除非有必要,否则我无法手动触摸数据库腐败)。
哔哔

+1,我同意这是gr8的答案,但我也对此表示赞同
Gennady

1

您是否考虑过使用免费的DBMS(MySQL,PostreSQL ...)之一?那会减轻您的许可问题吗?

如果这不是一个选择,则SQL Server Express似乎是一个不错的解决方案。


2
去年,我们实际上对所有主要数据库(MySQL,PostgreSQL,Firebird,DB2,Oracle,SQL Server,SQL Server Express和SQL Desktop)进行了性能测试。我们发现DB2,Oracle和SQL Server(以及Express,而不是Desktop)在Windows上为我们的事务操作淘汰了MySQL和PostgreSQL-系数提高了2倍。性能意味着服务器数量的两倍。当托管在Linux上时,MySQL和PostgreSQL的性能要好一些,但仍不及标准。
哔哔

1

它当然可以用于重要的生产应用。我们已经在1500多家医疗诊所中使用了该工具,每个诊所都安装了单独的SQL Server Express实例,每天可以处理数百万笔交易。您可以使用以下方法之一轻松解决SQL Server代理的缺点:

  1. 第三方产品,例如SQLAutomate
  2. Windows Task Scheduler
  3. 装有主服务器功能1和2的SQL Server的标准版或企业版非常便宜或免费。除非您已在环境中使用3,否则它会很昂贵。

请参阅“在生产中使用SQL Server Express”上Michael Otey的精彩演讲(在Google上搜索)。


这实际上是一个7岁的帖​​子:)
BaronSamedi1958
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.