AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-3296

Jeremy Holovacs's questions

Martin Hope
Jeremy Holovacs
Asked: 2020-08-06 05:08:54 +0800 CST

向聚集列存储索引表添加索引是否有意义?

  • 9

Question is similar to this one,但答案似乎没有回答这个问题。

我对聚集列存储表的理解(如果我错了,请纠正我)是每列都以某种物理有序的方式存储,这意味着每列已经具有相当于聚集索引的内容。如果是这种情况,那么在表上添加更多索引就没有多大意义......或者会吗?也许是综合指数?

我的想法对吗?

sql-server clustered-index
  • 2 个回答
  • 1830 Views
Martin Hope
Jeremy Holovacs
Asked: 2020-07-16 03:58:51 +0800 CST

尝试将大表转换为列存储时 Azure tempdb 填满...如何缓解?

  • 1

我有一个大型报告表(大约 6B 行),在 azure sql db 上占用了大约 400GB 的存储空间。我一直在尝试使用以下命令将其转换为列存储表:

insert Logs(Message) values ('Creating SRR table...');
select top 0 * into temp.SRR from dbo.SRR (nolock);
create clustered columnstore index ix_SRR on temp.SRR with (online = off);
create index ix_SRR_JobId on temp.SRR (JobId);
insert Logs(Message) values('Populating SRR table...');
insert into temp.SRR with (tablock) select * from dbo.SRR (nolock);
insert Logs(Message) values ('Switching out SRR table...');
alter schema old transfer dbo.SRR;
alter schema dbo transfer temp.SRR;
insert Logs(Message) values ('SRR table converted.');
if (select count_big(*) from old.SRR (nolock)) = (select count_big(*) from dbo.SRR (nolock)) begin
    drop table old.SRR;
    insert Logs(Message) values('Deleted old SRR table.');
end else begin
    insert Logs(Message) values('Row counts between old.SRR and dbo.SRR do not match; retaining old.SRR.');
end

这对我们所有其他大型报告表都有效,但是这个(经过 30 小时的 DTU 时间)始终失败并显示以下消息:

Msg 40544, Level 17, State 2, Line 195
The database 'tempdb' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.

我能做些什么来完成这项工作?

sql-server azure-sql-database
  • 1 个回答
  • 356 Views
Martin Hope
Jeremy Holovacs
Asked: 2018-01-11 11:08:25 +0800 CST

在 PostgreSQL 中创建一个非序数 ID

  • 0

如果我声明一个列serial在 PostgreSql 中,它将按序数顺序自动递增。由于回滚等原因,最终结果可能不是连续的,但它或多或少是有序的。

我有一个用户表,其中用户 ID 设置为serial,因此从 1 开始递增......但我宁愿他们不是,因为它似乎要求某种序列号攻击。

是否有一种相对简单、相对高效的方法可以在 PostgreSQL 中创建自动人工 ID,以便 ID 随机间隔开,并且您不应该期望 ID 987654321 遵循 ID 987654320?

postgresql primary-key
  • 2 个回答
  • 2040 Views
Martin Hope
Jeremy Holovacs
Asked: 2017-06-08 05:18:41 +0800 CST

BCP 问题:在 BCP 数据文件中遇到意外的 EOF

  • 4

我有一个这样定义的表:

CREATE TABLE [dbo].[IpMetadata](
    [StartIp] [bigint] NOT NULL,
    [EndIp] [bigint] NOT NULL,
    [CountryCode] [char](10) NOT NULL,
    [ProxyType] [varchar](50) NULL,
    [ProxyDescription] [varchar](50) NULL,
    [IspName] [varchar](100) NULL,
    [MobileCarrier] [varchar](50) NULL,
    [MobileCarrierCode] [varchar](50) NULL,
    [Latitude] [varchar](50) NULL,
    [Longitude] [varchar](50) NULL,
    [PostalCode] [varchar](50) NULL,
    [City] [varchar](50) NULL,
    [Region] [varchar](50) NULL,
    [Country] [varchar](50) NULL,
    [GmtOffset] [varchar](50) NULL,
    [SupportsDaylightSavings] [char](10) NULL,
    [MetroCode] [varchar](50) NULL,
    [AddressCount] [int] NOT NULL,
     CONSTRAINT [PK_IpMetadata] PRIMARY KEY CLUSTERED 
    (
        [StartIp] ASC,
        [EndIp] ASC
    )
)

我有一个 UTF-8 编码的采样文件 (D:\data\ipsnip.csv),其中包含制表符分隔、CRLF 终止的行,可以像这样插入到这个表中:

#start-ip   end-ip  edge-two-letter-country proxy-type  proxy-description   isp-name    mobile-carrier  mobile-carrier-code edge-latitude   edge-longitude  edge-postal-code    edge-city   edge-region edge-country    edge-gmt-offset edge-in-dst edge-metro-code address-count
0   0   **                  0   0   0   0   reserved    *** *** +9999   n   -1  0
1   255 **                  0   0   0   0   reserved    *** *** +9999   n   -1  254
256 16777215    **                  0   0   0   0   reserved    *** *** +9999   n   -1  16776959
16777216    16777343    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   127
16777344    16777407    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   63
16777408    16777471    au                  0   -37.7596    145.134 3106    templestowe vic aus +1000   n   36211   63
16777472    16778239    cn          chinanet fujian province network        0   26.0786 119.298 350000  fuzhou  35  chn +800    n   156115  767
16778240    16779263    au          big red group       0   -37.8387    144.99  3141    south yarra vic aus +1000   n   36206   1023
16779264    16781311    cn          chinanet guangdong province network     0   30.6611 104.082 510000  guangzhou   44  chn +800    n   156196  2047
16781312    16785407    jp          i2ts inc.       0   35.6838 139.754 100-0001    tokyo   13  jpn +900    n   -1  4095

我像这样运行 BCP 命令:

bcp MyDatabase.dbo.IpMetadata in D:\data\ipsnip.csv -F2 -Slocalhost -n -T

我得到这样的回复:

Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]Unexpected EOF encountered in BCP data-file

BCP copy in failed

我已经尝试明确指定列和行终止符。我尝试过使用 unicode 列定义。我尝试将行尾更改为 LF 而不是 CRLF。我尝试用分号/管道替换字段终止符。我试过-n和-N. 我不知道还能尝试什么。有人可以帮忙吗?

sql-server bulk-insert
  • 2 个回答
  • 18879 Views
Martin Hope
Jeremy Holovacs
Asked: 2013-09-11 08:47:53 +0800 CST

无法缩小事务日志 [重复]

  • 1
这个问题在这里已经有了答案:
为什么事务日志不断增长或空间不足? (4 个回答)
7年前关闭。

这里有点让人头疼。

我有一个数据少于 1GB 的数据库,但有一个 40GB 的日志文件。事务日志每天备份,这个数据库上没有很多活动;大约每周一次,它会记录新的工资单信息,然后将这些数据重复用于报告目的。数据库设置为自动收缩。

运行sp_spaceused @updateusage = true产生以下信息:

database_name   database_size   unallocated space
PayrollImports  39412.06 MB 105.00 MB

reserved    data    index_size  unused
321728 KB   278640 KB   42816 KB    272 KB

运行DBCC shrinkfile (N'PayrollImports_log', 1 , notruncate)产生以下结果:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456

UsedPages... the和 the之间的差异EstimatedPages令人费解,但我继续DBCC shrinkfile (N'PayrollImports_log', 1 , truncateonly)并得到:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456

在这一点上什么都没有改变。日志文件仍然是 40GB。所以我想,也许我有一些公开交易。运行dbcc opentran应验证:

No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

废话。好吧,也许我的索引是零散的。我将对它们进行碎片整理sp_msForEachTable 'DBCC indexdefrag([PayrollImports], ''?'')'并尝试再次缩小:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456

仍然没有任何改变。好的,我用 重新索引怎么样sp_msForEachTable 'DBCC dbreindex([?])'?

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

...现在我们得到:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456

没变。好吧,怎么样sp_msForEachTable 'ALTER INDEX ALL ON [PayrollImports].[?] REBUILD WITH (FILLFACTOR = 10)'?

立即,这失败了:

Cannot find the object "(One of my tables)" because it does not exist or you do not have permissions.

嗯?它在那里,好的。我做了一个select top 10 * from (My table),它空了。嗯,这根本不对。这是一个应该有超过 200 行的查找表。这可能是数据损坏问题吗?我从我的开发环境中收集数据,重新插入。

但我没有想法。我不能缩小这个东西。我还能尝试什么?为什么我的 UsedPages 比我的 EstimatedPages 高得难以置信?这里发生了什么?

sql-server sql-server-2005
  • 1 个回答
  • 1785 Views
Martin Hope
Jeremy Holovacs
Asked: 2013-05-30 11:14:15 +0800 CST

分析 PostgreSQL 函数 [重复]

  • 1
这个问题在这里已经有了答案:
用 plpgsql 编写的函数调用的 Postgres 查询计划 2 个答案
9 年前关闭。

如果我使用

explain (analyze true, verbose true, costs true, buffers true)
select * from mystoredprocedurefunction(arg1, arg2);

我没有得到任何关于服务器在我的 sp 中实际执行的信息。相反,我得到 5 行描述我调用了一个函数并且花了很长时间的行。如何查看我的存储过程并查看发生了什么?我发生了一些非常低效的事情。

postgresql pgadmin
  • 1 个回答
  • 3928 Views
Martin Hope
Jeremy Holovacs
Asked: 2013-02-25 08:21:19 +0800 CST

PostgreSQL 8.4:如何判断是否安装了程序语言?

  • 6

我有一个安装程序,需要 plpgsql 在 PostgreSQL 8.4 数据库中安装存储过程。我需要确保安装了语言,否则应用程序将失败。我不想放弃该语言并重新添加它,因为这可能会搞砸一些其他事情。

有没有办法“温和地”安装语言?
CREATE LANGUAGE IF NOT EXISTS似乎无效。

postgresql functions
  • 1 个回答
  • 4808 Views
Martin Hope
Jeremy Holovacs
Asked: 2012-12-07 17:29:47 +0800 CST

如何设置和获取自定义数据库变量?

  • 10

使用PGAdmin III我可以右键单击数据库,导航到Variables选项卡,然后将变量名称-值属性放在数据库本身上。有没有办法自定义这些?我看到了一个application_name变量,但我想要一个application_version变量。

postgresql
  • 2 个回答
  • 10546 Views
Martin Hope
Jeremy Holovacs
Asked: 2012-12-07 09:02:48 +0800 CST

如何确定 PostgreSQL 中表的排序规则?

  • 31

我想编写一个检查在 PostgreSQL 中的表上使用的排序规则的脚本,但是谷歌搜索对Postgresql detect collation我来说效果不佳,并且文档并没有使它成为一个简单的搜索。

谁能告诉我如何检查这个?

postgresql collation
  • 2 个回答
  • 39249 Views
Martin Hope
Jeremy Holovacs
Asked: 2011-12-25 11:34:24 +0800 CST

有没有办法同时设置 PostgreSQL 数据库中所有对象的所有者?

  • 14

Stack Overflow Q & A Modify OWNER on all tables 同时在 PostgreSQL中描述了一些将表和其他对象更改为特定用户的绝妙方法,并且它工作得很好,但是所有建议似乎都忽略了我创建的函数。

是否有一种相当简单的方法来重置数据库中所有对象的所有者,包括函数?手工操作是非常不可取的。

postgresql functions
  • 5 个回答
  • 19957 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve