Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server EXE是可用的,显然您希望避免完整的表扫描,因此性能调优和查看查询计划非常重要,其他人已经指出了这一点_Sql Server_Database_Postgresql - Fatal编程技术网

Sql server EXE是可用的,显然您希望避免完整的表扫描,因此性能调优和查看查询计划非常重要,其他人已经指出了这一点

Sql server EXE是可用的,显然您希望避免完整的表扫描,因此性能调优和查看查询计划非常重要,其他人已经指出了这一点,sql-server,database,postgresql,Sql Server,Database,Postgresql,上面关于校验和的一点看起来很有趣,它甚至可能是同一个表中attr1的索引。您想了解的是数据库软件施加的表大小限制。例如,在撰写本文时;两者都不限制每个表的行数。如果配置正确,这些数据库系统在处理数百亿或数千亿行(如果每行足够小)时应该不会有问题,更不用说5亿行了 为了获得处理海量数据的最佳性能,您应该拥有足够的磁盘空间和良好的磁盘性能,这可以通过适当RAID中的磁盘和大量内存以及快速处理器(理想情况下是服务器级Intel Xeon或AMD Opteron处理器)来实现。不用说,您还需要确保数据库

上面关于校验和的一点看起来很有趣,它甚至可能是同一个表中attr1的索引。

您想了解的是数据库软件施加的表大小限制。例如,在撰写本文时;两者都不限制每个表的行数。如果配置正确,这些数据库系统在处理数百亿或数千亿行(如果每行足够小)时应该不会有问题,更不用说5亿行了


为了获得处理海量数据的最佳性能,您应该拥有足够的磁盘空间和良好的磁盘性能,这可以通过适当RAID中的磁盘和大量内存以及快速处理器(理想情况下是服务器级Intel Xeon或AMD Opteron处理器)来实现。不用说,您还需要确保数据库系统配置为最佳性能,并且表已正确索引。

下面的文章讨论了在Microsoft SQL中导入和使用160亿行表。

从文章中:

以下是从我的经验中提炼出的一些技巧:

定义了聚集索引的表中的数据越多 将未排序的记录导入其中的速度变慢。在某个时刻, 它变得太慢而不实用。如果要导出表 对于尽可能小的文件,将其设置为本机格式。这个效果最好 表中大多包含数字列,因为它们更复杂 在二进制字段中比字符数据更紧凑地表示。如果有的话 您的数据是字母数字的,如果将其导出到 本机格式。不允许在数值字段中使用空值可能会进一步 压缩数据。如果允许字段为空,则该字段的 二进制表示将包含一个1字节的前缀,指示有多少个字节 随后将显示字节的数据。使用BCP的时间不能超过 2147483647记录,因为BCP计数器变量为4字节 整数。我无法在MSDN或 互联网如果您的表包含2147483647条以上的记录, 您必须将其分块导出,或者编写自己的导出例程。 在预填充表上定义聚集索引需要大量磁盘空间 空间在我的测试中,我的日志爆炸到原来表格大小的10倍 在完成之前。使用导入大量记录时 大容量插入语句,包括BATCHSIZE参数并指定如何 一次提交许多记录。如果不包括此参数, 整个文件作为单个事务导入,这需要 大量的日志空间。使用 聚集索引是先对数据进行预排序。然后可以导入它 将大容量INSERT语句与ORDER参数一起使用


甚至与SQL Server上容纳数十PB(数千TB)和数万亿行的多PB Nasdaq OMX数据库相比,这也算不了什么。

这能解决什么问题?每一个数据库都可以处理这一数量的记录。“Core 2 CPU 6600,4GB,64位系统,Windows VISTA”并不是我建议cassandra使用的机器类型…@rogerdpack从我自己的经验来看,当一个表很长时,Mysql在索引属性方面经常出现问题。Mysql可能会在查询计划上遇到问题,它非常有限。但这取决于你的查询类型,像往常一样。@FrankHeikens我在MSSQL数据库中有一个16列的表,包含150万条记录,我每天平均插入3.25行。在插入每一行之前,我将检查表中的5列值。如果基于这5列值未找到行,则只能插入新行。请告诉我如何才能有效地完成这项工作?提前谢谢,请看下面我的回答。同样,这取决于很多因素,包括行大小、连接等。从技术上讲,除了说“每个dbms都可以做到这一点……取决于您的数据”,任何人都不可能给您一个明确的答案,不同dbms之间的性能差异将归结为实际数据以及如何对其进行切分。在回答这个问题时,我正在寻找我应该在低端计算机上使用哪个数据库的信息,以便提供结果来选择where子句中指定了一个或两个字段的问题。没有加入。我需要创建索引(不像mysql那样需要很长时间)才能为我的select查询获得足够的性能。@Skarab:请注意,要准确回答您的问题,方法是创建一个数据库,用5×10填充它⁸ 随机记录,并进行测试。是的,这样做的时间更长(特别是如果您需要安装SQL Server),但至少您会确保做出正确的选择。请给我们一些预期查询的示例以及表的外观。另外,哪个操作系统?您的示例意味着您要做一个透视表。是这样吗?或者您只是要在代码中进行选择和透视?答案对服务器性能有很大的影响,这取决于结果表的宽度。。。看起来你可以手动增加PostgreSQL的限制:或者也可以通过分区[?]这是对我所有SQL焦虑症的一个额外有用的答案。我希望我能给出更多的分数/特别喜欢的答案!:)它所说的很有道理,所以为什么要提升任何数据库供应商而不是其他供应商,特别是因为MSSQL服务器不在最初的范围内?@alci:最初的问题指定了“Msql”。(注意缺少的第二个字母,它将定义它)我最初将其理解为MSsql而不是MySQL,因为它被标记为“sql server”;这是微软产品的标签,因此需要调用微软的数据库
 create table mapper {
        key VARCHAR(1000),
        attr1 VARCHAR (100),
        attr1 INT,
        attr2 INT,
        value VARCHAR (2000),
        PRIMARY KEY (key),
        INDEX (attr1), 
        INDEX (attr2)   
    }
CREATE TABLE BigStrings (
   BigStringID int identity(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   Value varchar(6000) NOT NULL,
   Chk AS (CHECKSUM(Value))
);
CREATE NONCLUSTERED INDEX IX_BigStrings_Chk ON BigStrings(Chk);

--Load 500 million rows in BigStrings

DECLARE @S varchar(6000);
SET @S = '6000-character-long string here';

-- nasty, slow table scan:
SELECT * FROM BigStrings WHERE Value = @S

-- super fast nonclustered seek followed by very fast clustered index range seek:
SELECT * FROM BigStrings WHERE Value = @S AND Chk = CHECKSUM(@S)