问题标签 [newsequentialid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 复制数据库上的 newsequuntialID 与 bigint
我最近开始研究一个具有离线场景合并复制的应用程序。我们有一个 int 标识列,用作 pk 和聚类索引。我们在每个表中也有 uniqueidentifier 列,因为复制需要它。在现场,由于身份列,我们有时会遇到身份范围超出 1 个或多个订阅数据库的问题。然后我们的支持人员介入并花费大量时间压缩该表,重新初始化订阅等。为了摆脱这个问题,我看到了 2 个解决方案。1. 使用 BigInt 列而不是 int 并保持身份。这将提供更大的范围,希望我们再也不会看到这个问题。2.去掉identity列,将uniqueidentifier列作为pk和聚簇索引。此列已经填充了 newsequntialID()。这将永久摆脱这个问题。这也将减少表的整体大小,因为从表中删除了 1 列,但它会增加外键索引和其他非聚集索引的大小。
我进行了一些负载测试,虽然 bigint 在时间方面稍有领先,但并没有太大的差异。
您如何看待这两个选项或我没有想到的任何其他选项?
sql - 我如何更改 sqlserver 的 NEWSEQUENTIALID() 的初始值
在此处输入图像描述我在我的数据库中使用 uniqueidentifier 列,默认值为 newid() 我将其更改为 NEWSEQUENTIALID() 我如何更改它的起始值以增加最后一个
c# - 生成的顺序 GUID 有时不是顺序的
我有一个 C# 应用程序,它为我插入到表中的每一行生成一个顺序 GUID。我希望插入的 GUID 是连续的,但有时它们会破坏序列(成块)。
例子:
这些 GUID 按插入的顺序显示。
为什么创建这些“顺序”GUID 时会出现如此大的顺序中断?
用于生成顺序 GUID 的代码:
循环中用于将新的 GUID 和信息插入表中的代码:
编辑:请参阅此问题以了解顺序 GUID:
sql-server - NEWSEQUENTIALID() 在 SQL Server for linux 中坏了?
我正在从 Docker 映像(https://hub.docker.com/r/microsoft/mssql-server-linux/)运行 MS SQL Server for linux
我在我的日志文件中发现,我的日志表上有许多 PRIMARY KEY 违规,该表有ID uniqueidentifier DEFAULT NEWSEQUENTIALID()
列。
例外是:
如文档中所述
NEWSEQUENTIALID 是 Windows UuidCreateSequential 函数的包装器。
(来源:https ://docs.microsoft.com/en-us/sql/t-sql/functions/newsequentialid-transact-sql )
那么它在linux上是如何工作的呢?行为是否被破坏,因为生成的 GUID 应该是唯一的,而它们显然不是。
复制步骤
启动 mssql-server-linux docker 镜像
docker run mssql-server-linux
(详见https://hub.docker.com/r/microsoft/mssql-server-linux/)创建表
CREATE TABLE SequentialIdTest(ID uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID(), ColA int );
插入新行
INSERT INTO SequentialIdTest(ColA) VALUES (0);
重启docker镜像
docker restart {CONTAINER_NAME}
尝试再次插入新行
INSERT INTO SequentialIdTest(ColA) VALUES (0);
r - 在随时间重复的顺序数据中创建唯一组
这种事情以前也有人问过,但我找不到这种方式。
在序列中创建标识符并不难,但我的数据包含一个让我陷入循环的时间元素。以下数据是一个虚构的数据集,只是为了说明一些易于处理的问题:
为便于想象,所有数据均来自明尼阿波利斯三个街区向东行走的三个人。每行代表记录其位置的时间。第一列是他们正在走过的社区。第二列是它们在每个时间点所在的交叉点。第三列是这些数据发生的顺序。
我想创建一个visit
列,将同一条街道、同一社区的连续时间点记录为单次访问,然后将回访记录为下一次访问。如何创建这种顺序标识符?
我在想这个ave()
技巧FUN=seq_along
可能会奏效,但我找不到一种方法来结合让我到达我想去的地方的因素。
更新:Uwe 的解决方案有效,但如果有人决定在一个交叉点进行所有测量,这就是我试图将其用于真实数据时发生的情况。如果发生这种情况,则原始行数不会返回到最终的 data.table。看看这里发生了什么:
在这种情况下,运行 Uwe 的解决方案仅返回 6 行。
sql-server - 为什么默认的 newsequentialid() 不起作用?
我有一个默认值为 的表id
,newsequentialid
但生成的值不是连续的。
我正在填充这样的行:
使用SQL Server Express 2017 14.0.2002
sql - 进行多次插入时如何获取插入的 NewSequentialId 值?
SQL Server 是否保证将按照 INSERT 语句的 ORDER BY 子句指定的顺序为每一行调用 NewSequentialId()?
目标是在 C# 中获取一个对象列表,每个对象代表要插入到表中的一行,然后相当快地将它们插入到表中。
我要做的是使用 SqlBulkCopy 将行插入到临时表中,然后将临时表中的行插入到使用 NewSequentialId() 的表中,然后以可以在与 C# 中的对象列表相同的顺序,以便可以将 ID 附加到 C# 中的每个对应对象。
我正在使用 SQL Server 2016,这是目标表:
首先,我使用 SqlBulkCopy 将行插入到这个临时表中。RowOrder 列包含应用程序中生成的整数。RowOrder 是我需要返回生成的 ID 的顺序。在应用程序中,RowOrder 是列表中每个 C# 对象的索引。
然后我运行此 SQL 以从 #MyTableStaging 中获取行,将它们插入 MyTable 并检索插入的 ID。
在我所有的测试中,这都有效。但是我最近发现,OUTPUT子句中指定的表中插入行的顺序并不总是和INSERT语句中ORDER BY指定的顺序相同(我发现这个是因为这个系统的原始设计是在#MyTableStaging 中使用标识,而不是按#MyTableStaging.Id 排序,而是按标识列排序)。
我知道 SQL Server 保证按照 INSERT 语句的 ORDER BY 子句中指定的顺序生成标识值(来自https://docs.microsoft.com/en-us/sql/t-sql/statements/insert- transact-sql?view=sql-server-2017#limitations-and-restrictions):
使用带有 ORDER BY 的 SELECT 来填充行的 INSERT 查询保证了如何计算标识值,但不保证插入行的顺序。
sql - 当使用 NEWSEQUENTIALID() 作为主键时,我的聚集索引应该是什么?
我正在使用 newsequentialid 为表中的主键生成 GUID。
根据文档(https://docs.microsoft.com/en-us/sql/t-sql/functions/newsequentialid-transact-sql?view=sql-server-ver15),不保证顺序 GUID按顺序生成。
重新启动 Windows 后,GUID 可以从较低的范围重新开始,但仍然是全局唯一的
基本上,它们是有序的,直到您重新启动机器。
对于自动增量主键,它是聚集索引是有意义的,因为它保证插入的行将在末尾。
对于 GUID 主键,将其作为聚集索引没有意义,因为它是随机的,插入的行不太可能位于末尾。
那么顺序 GUID 主键呢?主键应该是聚集索引,还是应该尝试查找另一列,例如 DateCreated 字段?问题是像 DateCreated 这样的字段不会是唯一字段。如果我没有任何唯一字段,我应该将什么作为聚集索引?
sql-server - 是否可以用 NewId() 重复 NEWSEQUENTIALID()?
我以前有一张表,大约有1000W条数据,主键列的数据类型是uniqueidentifier
,默认值是Newid()
。现在出现性能问题,我想将默认值更改为NEWSEQUENTIALID()
.
生成的 GUID 是否可以NEWSEQUENTIALID()
复制之前保存的数据(之前生成的NewId()
)?
r - 是否有一个 R 函数可以按照数据集中出现的顺序为数据框中的每个值顺序分配代码?
我有一个包含一长串别名值的表,如下所示:
我想让 R 遍历两列并按顺序为每个值分配一个数字,按照别名值出现在数据集中的顺序。我希望 R 先跨行读取,然后向下读取列。例如,对于上面的数据集:
这可能吗?理想情况下,我也希望能够生成一个“密钥”,它将每个顺序代码与每个别名值匹配,如下所示:
提前感谢您的帮助!