Database 满足我需求的最佳数据库是什么?

Database 满足我需求的最佳数据库是什么?,database,relational-database,non-relational-database,Database,Relational Database,Non Relational Database,我目前正在使用MS SQL Server 2008,但我不确定它是否是执行此特定任务的最佳系统 我有一张这样的桌子: PK_ptA PK_ptB DateInserted LookupColA LookupColB ... LookupColF DataCol (ntext) 常见的查询是 SELECT TOP(1000000) DataCol FROM table WHERE LookupColA=x AND LookupColD=y AND LookupColE=z ORDER BY D

我目前正在使用MS SQL Server 2008,但我不确定它是否是执行此特定任务的最佳系统

我有一张这样的桌子:

PK_ptA PK_ptB DateInserted LookupColA LookupColB ... LookupColF DataCol (ntext)
常见的查询是

SELECT TOP(1000000) DataCol FROM table 
WHERE LookupColA=x AND LookupColD=y AND LookupColE=z
ORDER BY DateInserted DESC 
该表大约有10亿行,每天插入500万行

我使用SQL Server的主要问题是,数据文件不太容易分割或分散。此外,导出速度似乎最高为每秒1000行(约1MB/s),这似乎非常缓慢

我遇到的另一个问题是,使用SQL Server时,如果我想添加一个新的LookupCol,那么日志文件将大大增加,需要大量很少使用的可用空间


对于这个问题,有什么明显更好的解决方案吗?

您遇到了一个问题,而不是SQL Server。让我也忽略一下,你的桌子设计似乎很糟糕

  • 传播数据文件实际上相当容易。以后重新组织不是那么容易,但也是可行的。您的表、文件组和文件布局如何
  • 每秒输出1mb是个笑话。认真地我已经在几分钟内处理了1.5亿行文件,每分钟处理的行数远远超过了60000行。有些事很奇怪。临时空间?你做了性能分析吗?硬件看起来怎么样
  • 对于日志使用情况,没有任何东西起作用。基本上与大多数pro数据库一样,日志包含事务期间所有更改的数据库页面。添加字段将更改-所有页面
你应该:

  • 重新设计数据库(如果需要,可以使用视图将相同的旧表保留在适当的位置),使其不具有“LookupColA”等功能,而是进行规范化(LookupValue和由“column”编码的LookuPTable)。这样,您可以立即获得其他字段。这将变成一个类似于星型模式的数据仓库
  • 做一个性能分析。看起来你有点问题
  • 一定要告诉我们您的硬件;)
这里的这个问题肯定不是SQL Server,它与糟糕的表设计和(可能是)不足的——利用率不高的硬件有关。

好的,表设计(单独回答)。Lokup是基本的查找表

所以

  • 好看的
  • pk(int)
  • 表格类型
  • 价值观 作为维尔兹

  • 可估价

  • 主键

  • ValueLookupMap表

  • ValueTable条目的主键
  • 可查找条目的pk

因此,基本上,如果您添加一个查找“字段”,那么您只需在LookupTable中创建一组条目,然后在ValueLookupMap中添加条目。

您能给我们提供一些关于您存储的数据以及如何查询它的更多信息吗?呃,我正在存储1k个文本文件(作为NTEXT存储在DataCol中)。我通常需要一次检索几百万个,然后将它们放在磁盘上,合并成1MB的文本文件。我需要能够检索它们的基础上查找Cols和一个datetime列排序。谢谢Tom。服务器方面,我在RAID 5中使用带13 x 15kRPM 300GB驱动器的DELL MD3000和带16GB ram的T710、2.66GHz X5550、Windows 2003 x64。整个表数据存储在RAID阵列中。我没有拆分文件组。我不太同意你的桌子设计建议。请您进一步阐述一下您的建议,好吗?RAID 5在更新过程中速度会很慢-写入可能会降低您的读取性能。对于表格建议,请单独回答;)如果您没有调整表,可能会由于表上的未对齐分区(高达40%的io性能浪费)而导致大量性能损失。我认为您遇到了一个IO问题,这在一定程度上是由您造成的(例如:错误的安装,错误的raid布局)。