小编Han*_*non的帖子

SQL:选择除某些列之外的所有列

有没有办法访问SELECT表中的所有列,除了特定的列?从表中选择所有非 blob 或非几何列会非常方便。

就像是:

SELECT * -the_geom FROM segments;
Run Code Online (Sandbox Code Playgroud)
  • 我曾经听说这个功能被故意排除在SQL 标准之外,因为更改向表中添加列会改变查询结果。这是真的?论证有效吗?
  • 有没有解决方法,尤其是在 PostgreSQL 中?

postgresql sql-standard

140
推荐指数
5
解决办法
14万
查看次数

哪个数据库可以处理数十亿/万亿条记录的存储?

我们正在研究开发一种工具来捕获和分析我们收集的大量网络流量数据。每天我们捕获大约 14 亿条流记录,它们的 json 格式如下所示:

{
   "tcp_flags": "0",
   "src_as": "54321",
   "nexthop": "1.2.3.4",
   "unix_secs": "1352234521",
   "src_mask": "23",
   "tos": "0",
   "prot": "6",
   "input": "105",
   "doctets": "186",
   "engine_type": "0",
   "exaddr": "2.3.4.5",
   "engine_id": "2",
   "srcaddr": "9.8.7.6",
   "dst_as": "12345",
   "unix_nsecs": "752265174",
   "sysuptime": "2943529544",
   "dst_mask": "24",
   "dstport": "80",
   "last": "2943523241",
   "srcport": "52672",
   "dpkts": "4",
   "output": "111",
   "dstaddr": "6.5.4.3",
   "first": "2943517993"
}
Run Code Online (Sandbox Code Playgroud)

我们希望能够对数据集进行快速搜索(少于 10 秒),最有可能在很短的时间内(10 - 30 分钟间隔)。我们还希望索引大部分数据点,以便我们可以快速搜索每个数据点。我们还希望在执行搜索时拥有最新的数据视图。留在开源世界会很棒,但我们不反对为这个项目寻找专有解决方案。

这个想法是保留大约一个月的数据,这将是大约 432 亿条记录。粗略估计,每条记录将包含大约 480 字节的数据,相当于一个月内约 18.7 TB 的数据,可能是索引的三倍。最终,我们希望增加该系统存储数万亿条记录的能力。

我们已经(非常基本地)评估了 couchbase、cassandra 和 mongodb 作为这个项目的可能候选者,但是每个人都提出了自己的挑战。使用 couchbase,索引是每隔一段时间完成的,而不是在插入数据期间完成,因此视图不是最新的,cassandra 的二级索引在返回结果方面效率不高,因为它们通常需要扫描整个集群以获取结果,而 mongodb 看起来很有希望但是由于它是主/从/分片,因此扩展似乎要困难得多。我们计划评估的其他一些候选者是 elasticsearch、mysql(不确定这是否适用)和一些面向列的关系数据库。任何建议或现实世界的经验将不胜感激。

nosql rdbms mongodb sql-server cassandra

78
推荐指数
3
解决办法
4万
查看次数

SQL Server MAXDOP 设置算法

在设置新的 SQL Server 时,我使用以下代码来确定设置的良好起点MAXDOP

/* 
   This will recommend a MAXDOP setting appropriate for your machine's NUMA memory
   configuration.  You will need to evaluate this setting in a non-production 
   environment before moving it to production.

   MAXDOP can be configured using:  
   EXEC sp_configure 'max degree of parallelism',X;
   RECONFIGURE

   If this instance is hosting a Sharepoint database, you MUST specify MAXDOP=1 
   (URL wrapped for readability)
   http://blogs.msdn.com/b/rcormier/archive/2012/10/25/
   you-shall-configure-your-maxdop-when-using-sharepoint-2013.aspx

   Biztalk (all versions, including 2010): 
   MAXDOP = 1 is only required on the BizTalk …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration maxdop

74
推荐指数
5
解决办法
6万
查看次数

SQL Server 中的数据混淆

SQL Server 中数据混淆的最佳实践是什么?

我们想在我们的 UAT 系统中使用屏蔽的生产数据。

如果我们想快速完成,并且混淆程度更高,应该采取什么方法?我正在考虑角色争夺人们的名字和姓氏,但如何?我应该自己创建一个函数还是有任何可用的预定义函数?我不想花时间重新发明轮子:)

日期字段怎么样?例如,是否应该从整个表中随机选择出生日期并分配给记录,或者有更好的方法吗?

sql-server sql-server-2008-r2

47
推荐指数
3
解决办法
3万
查看次数

PostgreSQL 和 MySQL 的可扩展性限制

我听说非分片关系数据库(如 MySQL 或 PostgreSQL)的性能“突破”超过 10 TB。

我怀疑这样的限制确实存在,因为人们不会想出 Netezza、Greenplum 或 Vertica 等,但是我想问这里是否有人参考了任何研究论文或正式案例研究,其中量化了这些限制。

mysql postgresql scalability

45
推荐指数
1
解决办法
4万
查看次数

当 .sql 脚本失败时,如何使 sqlcmd 返回 0 以外的 ERRORLEVEL?

我正在从一个批处理文件运行 sqlcmd,我想知道如何让它在备份出现问题时返回 0 以外的 ERRORLEVEL。

sql-server sql-server-2008-r2 sqlcmd

45
推荐指数
2
解决办法
5万
查看次数

将所有列记录转换为小写

我正在使用 PostgreSQL 9.1 并且我有一个带有login列的用户表。

登录名区分大小写,例如 Bob、MikE、john。我想将所有这些记录转换为小写。我怎样才能做到这一点?

postgresql functions

38
推荐指数
1
解决办法
4万
查看次数

如何仅在 psql (postgresql) 中关闭标头

我正在使用 PostgreSQL 9.1.X

我正在尝试构建psql脚本来打印没有页眉但包括页脚的结果。

http://www.postgresql.org/docs/9.1/static/app-psql.html

从上面的文件

\pset tuples_only
Run Code Online (Sandbox Code Playgroud)

将关闭页眉和页脚。和

\pset footer off
Run Code Online (Sandbox Code Playgroud)

只会关闭页脚。

有没有办法psql关闭页眉并保持页脚打开?

我知道有很多方法可以使用 shell/perl/任何你喜欢的文本工具来解决这个问题,但是我想知道为什么页脚有一个配置而页眉没有一个配置?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
Run Code Online (Sandbox Code Playgroud)

postgresql psql

36
推荐指数
3
解决办法
5万
查看次数

在 SQL Server 中处理对密钥表的并发访问而不会出现死锁

我有一个旧应用程序用作替代IDENTITY各种其他表中的字段的表。

表中的每一行都存储了 中LastID命名的字段的最后使用的 ID IDName

有时,存储过程会出现死锁——我相信我已经构建了一个合适的错误处理程序;但是我很想知道这种方法是否像我认为的那样有效,或者我是否在这里吠错了树。

我相当肯定应该有一种方法可以访问这个表,而不会出现任何死锁。

数据库本身配置了READ_COMMITTED_SNAPSHOT = 1.

首先,这是表:

CREATE TABLE [dbo].[tblIDs](
    [IDListID] [int] NOT NULL 
        CONSTRAINT PK_tblIDs 
        PRIMARY KEY CLUSTERED 
        IDENTITY(1,1) ,
    [IDName] [nvarchar](255) NULL,
    [LastID] [int] NULL,
);
Run Code Online (Sandbox Code Playgroud)

以及该IDName字段上的非聚集索引:

CREATE NONCLUSTERED INDEX [IX_tblIDs_IDName] 
ON [dbo].[tblIDs]
(
    [IDName] ASC
) 
WITH (
    PAD_INDEX = OFF
    , STATISTICS_NORECOMPUTE = OFF
    , SORT_IN_TEMPDB = OFF
    , DROP_EXISTING = OFF
    , ONLINE = OFF
    , ALLOW_ROW_LOCKS = ON
    , ALLOW_PAGE_LOCKS = …
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock

33
推荐指数
4
解决办法
3万
查看次数

为什么 CREATE INDEX ... WITH ONLINE=ON 会在几分钟内阻止对表的访问?

我有一个现有的表:

CREATE TABLE dbo.ProofDetails
(
    ProofDetailsID int NOT NULL 
        CONSTRAINT PK_ProofDetails 
        PRIMARY KEY CLUSTERED IDENTITY(1,1)
    , ProofID int NULL
    , IDShownToUser int NULL
    , UserViewedDetails bit NOT NULL 
        CONSTRAINT DF_ProofDetails_UserViewedDetails 
        DEFAULT ((0))
);
Run Code Online (Sandbox Code Playgroud)

该表有 150,000,000 行。系统 24x7x365 全天候运行,因此没有定期发生的维护窗口。

我想向表中添加索引,并且使用 SQL Server 的企业版,我应该能够在不阻止对表的写访问的情况下做到这一点。我使用的命令是:

CREATE INDEX IX_ProofDetails_ProofID_Etc 
ON dbo.ProofDetails (ProofID, IDShownToUser)
INCLUDE (UserViewedDetails)
WITH (ONLINE=ON
    , ALLOW_ROW_LOCKS=ON
    , ALLOW_PAGE_LOCKS=ON
    , FILLFACTOR=100
    , MAXDOP=4
);
Run Code Online (Sandbox Code Playgroud)

我在 SSMS 中通过按 自行执行了该语句F5。它运行了超过一分钟,然后开始阻塞其他会话。然后我立即取消了该CREATE INDEX命令,因为我无法阻止其他会话。

在第一分钟,没有任何东西阻止我的CREATE INDEX命令,sys.dm_exec_requests显示了等待类型CXPACKET- 当然。我认为这不是一件坏事,因为操作是并行化的。 …

index sql-server sql-server-2012

30
推荐指数
1
解决办法
6万
查看次数