我们即将推出双Web /内部交易应用程序,每个客户端都有自己的数据库。 每个数据库都非常小 – 每个都不到50MB,所以我们想知道使用SQL Express 2008而不是完整的SQL Server是否合理。
这似乎具有在服务器之间分配磁盘I / O的优点,同时节省了大量的$$$(因为小型15K驱动器和使用的双核服务器都不贵)。 如果在某个时候我们需要太多的服务器,我们可以升级到SQL Server …但是对于几十个内部用户来说,现在看起来太贵了(特别是因为我们需要一个故障转移框)。
考虑到我们的小型数据库大小,1GB内存和4个内核在单个处理器上的使用情况听起来不太严格。 我们永远不会有超过200个并发用户,而且大多数操作将会更具事务性(这似乎赞成大量的高速磁盘而不是重的RAM / CPU,对吧?)
我是否错过了SQL Server Standard的任何优势,可以certificate最初额外的$ 5-20K的投资?
其他版本的SQL服务器可以让你像SQL代理一样,所以你可以安排数据库维护和其他工作。
只要你的数据库可以适应Express版本的限制,你就会好起来的。
SQL服务器喜欢大量的RAM。 越多越好。 由于SQL Server无法将数据加载到caching中,这会给磁盘带来额外的负载。 您应该看看SQL Server的Web Edition或Workstation版本。 这些版本比Express版本有更高的限制,但成本低于标准版。
如果您确实从Express版开始,则在购买许可证后,您可以随时将其升级到标准版。
Express版有一些生产问题和解决方法:
计划备份
SSIS
剖析
如果您阅读SQL Server许可证,如果仅用于故障转移,则不需要为被动服务器购买额外的许可证,直到第一台服务器出现故障时才提供查询服务。
我们已经使用了SQL Server Express相当长的时间,而且它比之前的MSDE好得多,我们有200多个simulatenous连接,但是我们只有一个大小为2GB的数据库,一切都很顺利。 我们从来没有任何问题,只要我们避免昂贵的连接,我们做好索引。 现在我们正在使用SQL标准,但是直到您的数据库大小超过4GB,而您的用户数量less于200-500,您当然可以使用SQL Express。
SQL Server Express使用的内存占用less一点〜200MB,其他标准版使用〜1.5GB,可能是因为标准版会做很多caching。 与标准版相比,您的查询速度在几毫秒内就会变慢。 不幸的是,Express版本并没有使用多核cpus(这是有限的function),所以它不会有很大的帮助,如果你有2核心或4核心。
LuckyLindy – 我鼓励你停下来,确认你不需要SQL代理。 你写了:
我们即将推出双Web /内部交易应用程序,每个客户端都有自己的数据库。 每个数据库都非常小 – 每个都不到50MB,所以我们想知道使用SQL Express 2008而不是完整的SQL Server是否合理。
你的备份计划是什么? 您不必使用SQL代理,但它确实使DBA的生活更轻松。 您可以编写T-SQL / SMO / PowerShell /执行备份的脚本,然后使用计划任务通过sqlcmd或PowerShell执行。
你的数据库维护计划是什么? 随着时间的推移,这些数据库将需要进行碎片整理并检查一致性。 标准版有各种各样的好东西使这容易,而在Express中,你必须工作(再次与脚本和计划的任务)。
你将如何被通知在服务器上的问题? Agent在这里通过Alerts帮助您在日志满了,磁盘正在填满等情况下通知您。
这些是关键的SQL Server DBAtypes的任务。 为内部应用程序运行Express是一回事,但一旦您开始告诉我们您将为客户托pipe这些应用程序,我就会担心:)
第二部分是问你有多less客户你计划在这个支持 – 无论是在推出和一年后? 如果你说“100个客户”,那么100个50MB的数据库就不能满足你的要求 – 你只是没有足够的内存。 赫克 – 根据你有多less三angular洲,你可能会超过15分贝,我不知道。
我们永远不会有超过200个并发用户,而且大多数操作将会更具事务性(这似乎赞成大量的高速磁盘而不是重的RAM / CPU,对吧?)
诸如INSERT之类的事务操作仍然被写入内存,所以不要指望你需要更less的内存支持。 实际上,取决于您执行的插入次数,您可能需要比大多数用户数量更多的内存需求。 如果你正在加载大量人们不会真正使用的数据,那么它仍然占用内存。 您可能会遇到“用户经常查询的数据”和“用户正在加载的数据,以至于没有人会查询一段时间”之间的争用问题。 SQL通过保存数据来保护我们在内存中查询的次数更多,但是你仍然会有争用。
在这一点上,我懒洋洋的大声笑。 而且200个并发用户也不会和我一起为Express服务。 比方说64k是平均连接内存的要求,你的应用程序将有多less连接? 你会使用连接池吗?
总而言之,通过阅读您的描述,我的直觉感受到,“不 – 快捷版function不够强大”。 我讨厌工作组版 – 认为这是一个不好的交易 – 所以标准对我来说似乎是正确的。
你有没有考虑过使用免费的DBMS(MySQL,PostreSQL …)之一? 这将缓解你的许可问题?
如果这不是一个选项,SQL Server Express似乎是一个很好的解决scheme。
它当然可以用于重要的生产应用。 我们已经在1500多家医疗机构中使用了它们,每个安装了独立的SQL Server Express实例,每天处理数百万笔交易。 您可以使用以下任一方法轻松解决SQL Server代理的缺点:
请参阅Michael Otey关于“在生产环境中使用SQL Server Express”的出色表述(google it)。