我们即将推出一个双网络/内部事务应用程序,其中每个客户端都有自己的数据库。每个数据库都非常小 - 每个不到 50MB,所以我们想知道使用 SQL Express 2008 代替完整的 SQL Server 是否有意义。
这似乎具有跨服务器分布磁盘 I/O 的优势,同时节省大量 $$$(因为小型 15K 驱动器和使用的双核服务器都很便宜)。如果在某些时候我们需要太多的服务器,我们可以升级到 SQL Server ......但是对于有几十个内部用户来说,现在这似乎太贵了(特别是因为我们需要一个故障转移框)。
考虑到我们较小的数据库大小,1GB 内存和在单个处理器上使用 4 个内核听起来并没有太大限制。我们永远不会有超过 200 个并发用户,并且大多数操作将更具事务性(这似乎有利于大量高速磁盘而不是重型 RAM/CPU,对吗?)
我是否错过了 SQL Server Standard 的任何优势,这些优势可以证明最初额外的 5-2 万美元投资是合理的?
SQL Server 的其他版本为您提供 SQL 代理等功能,因此您可以安排数据库维护和其他工作。
只要您的数据库可以满足 Express 版本的限制,您就可以了。
SQL 服务器喜欢大量的 RAM。越多越好。由于 SQL Server 无法将数据加载到缓存中,这会给磁盘带来额外的负载。您应该查看 SQL Server 的 Web 版或工作站版。这些版本的限制高于 Express 版,但成本低于标准版。
如果您确实从 Express 版开始,您可以在购买许可证后随时升级到 Standard 版。
我在 Express 版中遇到的一些生产问题和解决方法:
计划备份
SSIS
我能否使用 SQL Server 2008 Express/Web 运行 SSIS 包或
使用 Sql Server 2005 express 运行工作组 SSIS
剖析
如果您阅读 SQL Server 许可证,则如果被动服务器仅用于故障转移并且在您的第一台服务器发生故障之前它不提供查询服务,则无需购买额外的被动服务器许可证。
我们使用 SQL Server Express 已经很久了,它比早期的 MSDE 好得多,我们有 200 多个模拟连接,但我们只有一个 2GB 大小的数据库,一切都很顺利。只要我们避免昂贵的连接并且我们做好索引,我们就不会遇到任何问题。现在我们使用的是 SQL Standard,但是在您的数据库大小超过 4GB 并且您的用户数量少于 200-500 之前,您当然可以使用 SQL Express。
SQL Server Express 使用较少的内存占用约 200MB,而标准版使用约 1.5GB,可能是因为标准版会进行大量缓存。与标准版相比,您在 Express 中的查询将在几毫秒内变慢。不幸的是,Express 版不使用多核 CPU(这是有限的功能),所以无论你有 2 核还是 4 核,它都不会有很大帮助。
LuckyLindy - 我鼓励您稍等片刻,确认您不需要 SQL 代理。你写了:
您的备份计划是什么?您不必使用 SQL 代理,但它确实使 DBA 的生活更轻松。您可以编写执行备份的 T-SQL/SMO/PowerShell/任何脚本,然后使用计划任务通过 sqlcmd 或 PowerShell 执行。
您的数据库维护计划是什么?随着时间的推移,这些数据库将需要进行碎片整理并检查一致性。标准版有各种各样的好东西可以让这很容易,而在 Express 中,您必须工作(再次使用脚本和计划任务)。
服务器出现问题时如何通知您?当日志已满、磁盘已满等时,代理会在此处提供警报以通知您。
这些是关键的 SQL Server DBA 类型的任务。为内部应用程序运行 Express 是一回事,但是一旦您开始告诉我们您正在为客户托管这些应用程序,我就会担心 :)
第 2 部分是询问您计划在此方面支持多少客户 - 无论是在发布时还是一年后?如果你说“100 个客户端”,那么 Express 上 100 个 50MB 的数据库是不够的——你只是没有足够的内存。哎呀-取决于您有多少增量,我不知道您最多可以使用 15 个 DB。
诸如 INSERT 之类的事务操作仍会写入内存,因此不要期望您需要更少的内存支持。事实上,根据您执行的插入次数,您可能需要比大多数用户更大的内存需求。如果您正在加载大量人们不会真正使用的数据,那么它仍然会占用内存。您可能会遇到“用户经常查询的数据”和“用户正在加载但暂时没人会查询的数据”之间的争用问题。SQL 通过将人们更频繁地查询的数据保留在内存中更长的时间来保护我们,但您仍然会有争用。
在这一点上,我漫无目的的大声笑。Express 的 200 个并发用户也不适合我。假设 64k 是平均连接内存要求,您的应用程序将建立多少个连接?你会使用连接池吗?
总而言之,阅读您的描述后,我的直觉告诉我:“不,Express Edition 还不够强大。” 而且我讨厌工作组版——认为这是一个糟糕的交易——所以标准对我来说似乎是正确的。
您是否考虑过使用其中一种免费的 DBMS(MySQL、PostreSQL...)?这会减轻您对许可的担忧吗?
如果这不是一个选项,SQL Server Express 似乎是一个不错的解决方案。
它当然可以用于重要的生产应用程序。我们已经在 1500 多家医疗诊所使用它,所有诊所都安装了单独的 SQL Server Express 实例,每天处理数百万笔交易。您可以使用以下方法之一轻松绕过 SQL Server 代理的劣势:
请参阅 Michael Otey 关于“在生产中使用 SQL Server Express”的出色演示文稿(google it)。