代码之家  ›  专栏  ›  技术社区  ›  Mr. Flibble

最适合我需要的数据库是什么?

  •  2
  • Mr. Flibble  · 技术社区  · 14 年前

    我目前使用的是mssqlserver2008,但我不确定它是否是这个特定任务的最佳系统。

    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 
    

    我使用sqlserver的主要问题是它不太容易切分或分散数据文件。此外,导出速度似乎达到每秒1000行(大约1MB/s),这看起来非常慢。

    另一个问题是,对于sqlserver,如果我想添加一个新的LookupCol,日志文件会急剧增长,需要大量很少使用的可用空间。

    对于这个问题有什么明显的更好的解决办法吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Dan Soap    14 年前

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

    • 传播数据文件其实很容易。以后重组不是那么容易,但也是可行的。你的表、文件组和文件布局如何?
    • 每秒输出1mb是个笑话。说真的。我已经在几分钟内处理了1.5亿个行文件,这就意味着每分钟超过了60000行。有什么事发生了。临时空间?你做了业绩分析吗?硬件看起来怎么样?

    你应该:

    • 重新设计数据库(如果必须的话,可以使用视图来保持相同的旧表),使其不存在“LookupColA”等,而是被规范化(LookupValue和一个由“column”编码的LookuPTable)。这样就可以获得即时的附加字段。这就变成了一个类似星型模式的数据仓库。
    • 一定要告诉我们你的硬件;)

    这里的问题肯定不是SQL Server,它与糟糕的表设计和-可能-不足-糟糕的硬件利用率有关。

        2
  •  0
  •   TomTom    14 年前

    好的,桌子设计(单独回答)。Lokup是bassy查找表。

    • 好看的
    • 表格类型
    • 价值

    • 值表

    • pk键

    • ValueLookupMap表

    • 可查找条目pk

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