Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 沃尔数列无穷大?_Sql Server_Database_Oracle_Postgresql_Db2 - Fatal编程技术网

Sql server 沃尔数列无穷大?

Sql server 沃尔数列无穷大?,sql-server,database,oracle,postgresql,db2,Sql Server,Database,Oracle,Postgresql,Db2,我想知道数据库序列是否是无限的?我猜大多数WAL记录都有固定的WAL编号大小?这真的是一个很大的数字吗?这个数字太大了,以至于它无法到达终点?这可能相当浪费空间?还是大型DB播放器发明了更好的方法 或者他们是否实现了一些逻辑,让WAl再次从0开始?这可能会对代码中的许多点产生重大影响 编辑: 影响:例如,崩溃后的恢复取决于时间轴上的序列号越来越大。如果序列可以重新开始,恢复可能会变得混乱 术语WAL序列号:WAL(预写日志,也称为事务日志,在应用层收到事务成功之前,它被保证在您的磁盘上)。此日志

我想知道数据库序列是否是无限的?我猜大多数WAL记录都有固定的WAL编号大小?这真的是一个很大的数字吗?这个数字太大了,以至于它无法到达终点?这可能相当浪费空间?还是大型DB播放器发明了更好的方法

或者他们是否实现了一些逻辑,让WAl再次从0开始?这可能会对代码中的许多点产生重大影响

编辑:

影响:例如,崩溃后的恢复取决于时间轴上的序列号越来越大。如果序列可以重新开始,恢复可能会变得混乱


术语WAL序列号:WAL(预写日志,也称为事务日志,在应用层收到事务成功之前,它被保证在您的磁盘上)。此日志的数量不断增加,以保持数据库的一致性,例如,通过检查页面中的WAL序列号与WAL序列号来进行恢复。

我不认为每个数据库都实施相同的策略


仅就Oracle而言,SCN(系统更改编号)是一个48位的数字,因此Oracle数据库可以在达到极限之前处理近300万亿事务。事实上,这将需要亿万年的时间。即使你每秒可以处理1000个事务,SCN也不会在3000亿秒或大约9500年内达到这个极限。现在,除了进行事务(著名的是导致少数用户超出数据库对SCN合理性的检查)之外,还有各种因素可以导致SCN增加,因此不需要9500年才能达到极限。但是,实际上,它给了甲骨文足够的时间在未来几年迁移到64位SCN,为每个人多买了几个世纪的功能。

请参阅。本文描述了SQLServerLSN(WAL编号)的结构,并向您展示了如何对其进行解码。由于LSN的大小是固定的,并且不会发生翻滚,因此您可能会用完它们。不过这需要很长时间。

与SQL Server一样,DB2调用计数器a(LSN)。IBM最近将其LSN的大小从6个字节扩展到8个字节,无符号。LSN是一个不断增长的指针,它显示在日志文件中可以找到特定日志记录的位置。8字节的LSN意味着DB2数据库可以在耗尽地址空间之前写入近16条日志记录,此时必须卸载数据库内容并将其复制到新数据库中。

在PostgreSQL中,WAL日志存储为。“段文件的名称是不断增加的数字,从0000000 10000000000000开始。”这个数字并不环绕。

Postgres WAL数字在技术上可能会溢出,但只有在写入32 Eb的数据之后,因为WAL文件指针是64位的。请显示可能的影响场景。我不确定我是否见过这个术语“WAL序列”以前使用过,谷歌没有返回任何明显与数据库相关的内容。你能为我们定义一下这个术语吗?@JustinCave-googleling-WAL,这似乎是一个PostgreSQL术语,用于“预写日志记录”“。我不明白为什么它被标记为
Oracle
@BobJarvis这个词只是一个缩写。所有ACID数据库都使用WAL。这个问题也可以被标记为DB2、MSSQL或其他什么。我对任何ACID数据库的实现细节都感兴趣。想必他们无论如何都会有相同的策略…@Franz Kafka:只是为了记录在案,并非所有ACID数据库都使用WAL。我认为PostgreSQL中的WAL序列与Oracle的SCN有所不同。PostgreSQL的WAL有点类似于Oracle的重做日志。@一个没有名字的马-SCN应该记录在重做日志中。Oracle中的重做日志是否还有另一个组件与PostgreSQL WAL序列更相似?我对这两个组件的(日志记录)内部结构不太熟悉,所以我可能完全错了:我认为Oracles的“日志序列号”与WAL序列更匹配。但是,我还是不确定。另一方面PostgreSQL的
ctid
与Oracle的
SCN
非常匹配,因为两者都定义了一个“交易顺序”,如果您需要的话meant@a_horse_with_no_name:ctid是元组ID,由表中元组的块号和元组行指针号组成。LSN是日志序列号。如您所见,PostgreSQL LSN由两个32位整数组成;按照使用这些计数器的方式,它不会花费64位计数器那么长的时间,但是非常接近。@kgrittn:当然你是对的。实际上我想写
xid