小编Pau*_*ite的帖子

MySQL 能否合理地对数十亿行进行查询?

我计划将质谱仪的扫描结果存储在 MySQL 数据库中,并想知道存储和分析这一数量的数据是否远程可行。我知道性能因环境而异,但我正在寻找粗略的数量级:查询需要 5 天还是 5 毫秒?

输入格式

每个输入文件包含一次光谱仪运行;每次运行都由一组扫描组成,每个扫描都有一个有序的数据点数组。有一些元数据,但文件的大部分由 32 位或 64 位整数或浮点数数组组成。

主机系统

|----------------+---------------------------------------|
| 操作系统 | Windows 2008 64 位 |
| MySQL 版本 | 5.5.24 (x86_64) |
| 中央处理器 | 2x 至强 E5420(共 8 核)|
| 内存 | 8GB |
| SSD 文件系统 | 500 GiB |
| 硬盘RAID | 12 TiB |
|----------------+---------------------------------------|

服务器上还有一些其他服务在使用可忽略的处理器时间运行。

文件统计

|-----------+--------------|
| 文件数| ~16,000 |
| 总尺寸| 1.3 TiB |
| 最小尺寸 | 0 字节 |
| 最大尺寸 | 12 GiB …

mysql performance database-design

289
推荐指数
15
解决办法
17万
查看次数

授予用户帐户权限以在 PostgreSQL 中创建数据库

如何让 PostgreSQL 中的用户帐户能够创建和删除数据库?有没有办法做到这一点GRANT

postgresql permissions

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

帮助安装 SQL Server 2017 - VS Shell 安装失败,退出代码为 1638

有关如何处理此错误的任何建议:

TITLE: Microsoft SQL Server 2017 Setup
------------------------------

The following error has occurred:

VS Shell installation has failed with exit code 1638.

For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=14.0.1000.169&EvtType=0x5B39C8B9%25401434%25403

------------------------------
BUTTONS:

OK
------------------------------
Run Code Online (Sandbox Code Playgroud)

这是一台正在运行的新笔记本电脑

  • SQL Server 2016 Express
  • 视觉工作室 2017
  • SSMS 2017

我尝试卸载与 SQL Server 或 Visual Studio 相关的任何内容。

日志:[3500:3970][2017-11-03T16:25:20]e000:错误 0x80070666:安装较新版本时无法安装产品。

Detailed results:
  Feature:                       Full-Text and Semantic Extractions for Search
  Status:                        Failed
  Reason for failure:            An error occurred for a dependency of the feature causing the setup process for the feature to fail. …
Run Code Online (Sandbox Code Playgroud)

sql-server installation sql-server-2017

168
推荐指数
2
解决办法
17万
查看次数

Postgres 更新...限制 1

我有一个 Postgres 数据库,其中包含有关服务器集群的详细信息,例如服务器状态(“活动”、“待机”等)。活动服务器在任何时候都可能需要故障转移到备用服务器,我不在乎特别使用哪个备用服务器。

我想要一个数据库查询来更改备用服务器的状态 - 只有一个 - 并返回要使用的服务器 IP。选择可以是任意的:因为服务器的状态随着查询而改变,所以选择哪个备用数据库并不重要。

是否可以将我的查询限制为一次更新?

这是我到目前为止所拥有的:

UPDATE server_info SET status = 'active' 
WHERE status = 'standby' [[LIMIT 1???]] 
RETURNING server_ip;
Run Code Online (Sandbox Code Playgroud)

Postgres 不喜欢这样。我可以做些什么不同的事情?

postgresql concurrency update queue

107
推荐指数
1
解决办法
10万
查看次数

每组检索 n 行

我经常需要从结果集中的每个组中选择一些行。

例如,我可能想列出每个客户最近的“n”个最高或最低订单值。

在更复杂的情况下,要列出的行数可能因组而异(由分组/父记录的属性定义)。这部分绝对是可选的/为了额外的学分,而不是为了劝阻人们回答。

在 SQL Server 2005 及更高版本中解决这些类型问题的主要选项是什么?每种方法的主要优点和缺点是什么?

AdventureWorks 示例(为清晰起见,可选)

  1. 列出表中五个最近的交易日期和 ID TransactionHistory,每个产品以从 M 到 R 的字母开头。
  2. 再次相同,但n每个产品都有历史记录行,其中nDaysToManufactureProduct 属性的五倍。
  3. 同样,对于每个产品恰好需要一条历史记录行的特殊情况(最近的单个条目由TransactionDate, .tie-break on TransactionID.

sql-server t-sql greatest-n-per-group

97
推荐指数
6
解决办法
7万
查看次数

使用 LEFT JOIN 或 NOT EXISTS 之间的最佳实践

使用 LEFT JOIN 或 NOT EXISTS 格式之间是否有最佳实践?

使用一个比另一个有什么好处?

如果没有,应该首选哪个?

SELECT *
FROM tableA A
LEFT JOIN tableB B
     ON A.idx = B.idx
WHERE B.idx IS NULL
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM tableA A
WHERE NOT EXISTS
(SELECT idx FROM tableB B WHERE B.idx = A.idx)
Run Code Online (Sandbox Code Playgroud)

我在 Access 中对 SQL Server 数据库使用查询。

join sql-server exists

88
推荐指数
4
解决办法
18万
查看次数

检查约束只有三列之一为非空

我有一个 (SQL Server) 表,其中包含 3 种类型的结果:FLOAT、NVARCHAR(30) 或 DATETIME(3 个单独的列)。我想确保对于任何给定的行,只有一列有结果,其他列是 NULL。实现这一目标的最简单的检查约束是什么?

这样做的背景是试图改进将非数字结果捕获到现有系统中的能力。使用约束向表中添加两个新列以防止每行超过一个结果是最经济的方法,但不一定是正确的方法。

更新:抱歉,数据类型混乱。可悲的是,我不打算将指示的结果类型解释为 SQL Server 数据类型,只是通用术语,现在已修复。

sql-server constraint

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

MERGE 目标表的一个子集

我正在尝试使用MERGE语句从表中插入或删除行,但我只想对这些行的一个子集进行操作。的文档MERGE有一个措辞非常强烈的警告:

仅指定目标表中用于匹配目的的列很重要。也就是说,指定目标表中与源表的相应列进行比较的列。不要试图通过在 ON 子句中过滤掉目标表中的行来提高查询性能,例如通过指定 AND NOT target_table.column_x = value。这样做可能会返回意外和不正确的结果。

但这正是我必须做的事情才能完成我的MERGE工作。

我拥有的数据是一个标准的项目到类别的多对多连接表(例如,哪些项目包含在哪些类别中),如下所示:

CategoryId   ItemId
==========   ======
1            1
1            2
1            3
2            1
2            3
3            5
3            6
4            5
Run Code Online (Sandbox Code Playgroud)

我需要做的是用新的项目列表有效地替换特定类别中的所有行。我最初的尝试是这样的:

MERGE INTO CategoryItem AS TARGET
USING (
  SELECT ItemId FROM SomeExternalDataSource WHERE CategoryId = 2
) AS SOURCE
ON SOURCE.ItemId = TARGET.ItemId AND TARGET.CategoryId = 2
WHEN NOT MATCHED BY TARGET THEN
    INSERT ( CategoryId, ItemId )
    VALUES ( 2, ItemId ) …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql merge

74
推荐指数
1
解决办法
8万
查看次数

视图对 PostgreSQL 的性能有害吗?

以下摘自一本关于数据库设计的书(Beginning Database Design ISBN:0-7645-7490-6):

使用视图的危险在于根据视图过滤查询,期望读取非常大的表的非常小的部分。任何过滤都应该在视图中完成,因为在视图中的查询完成执行之后,才会应用针对视图本身的任何过滤。视图通常对加快开发过程很有用,但从长远来看,它会完全扼杀数据库性能。

以下是 PostgreSQL 9.5 文档的摘录:

充分利用视图是良好 SQL 数据库设计的一个关键方面。视图允许您封装表结构的细节,这些细节可能会随着应用程序的发展而改变,并隐藏在一致的接口后面。

这两个来源似乎相互矛盾(“不要用视图设计”与“用视图设计”)。

但是,在 PG 中,视图是使用规则系统实现的。因此,可能(这是我的问题)针对视图的任何过滤都被重写为视图中的过滤器,从而导致对基础表执行单个查询。

我的解释是否正确并且 PG 将 WHERE 子句组合进和出视图?还是单独运行它们,一个接一个?任何简短的、自包含的、正确的(可编译的)示例?

postgresql optimization view

70
推荐指数
4
解决办法
5万
查看次数

减少mysql中ibdata大小的最佳方法是什么?

我有一些生产服务器,其ibdata文件的大小每天都在增加。

它已经消耗了 290GB 的空间。

服务器中的表多为InnoDB,读写请求量大。

日志文件大小也在增加。表中有大量数据。

我怎样才能控制两者的增长规模?

我没有使用innodb_file_per_table.

mysql innodb

69
推荐指数
1
解决办法
13万
查看次数