对《SQL Server中tempdb的management》的一些更正和补充
对《SQL Server中tempdb的management》的一些更正和补充 前几天看了这篇文章:SQL Server中tempdb的management 发现里面有些内容不是很准确 文章中说到: TempDB和其他用户数据库一样以Model数据库为模板创建,并且可以创建和查询表格。 与其他用户数据库不
对《SQL Server中tempdb的management》的一些更正和补充
前几天看了这篇文章:SQL Server中tempdb的management
发现里面有些内容不是很准确
文章中说到:
TempDB和其他用户数据库一样以Model数据库为模板创建,并且可以创建和查询表格。
与其他用户数据库不同的是,TempDB在每次SQL Server启动的时候都会被重新创建。
我打开SQLSERVER2005,对比了一下model数据库和tempdb数据库,发现还是有一些不同
初始大小和自动增长、跨数据库所有权链接已启用这里不讨论
跨数据库所有权链接:
页面验证里面,,model数据库页面验证用的是checksum,但是tempdb没有页面验证
tempdb不使用页面验证究竟好还是不好???
讨论这个问题之前,这里要先了解一下checksum的功能
以下摘抄自:
页面 CHECKSUM:
在数据库页面从被写入磁盘到被SQL Server读取的这段时间内,有可能由于外界原因发生损坏。
比如I/O设备的损坏,驱动的损坏或者由于电源不稳没有写完整。Checksum机制使SQL Server可以检测到这些损坏。
需要注意的是,Checksum机制只能使我们确定是不是I/O子系统引起页面损坏,但是不能自动修复它们。
作为管理员,我们可以利用这些信息来辨识出并更换损坏的I/O设备,
也可以利用重建索引或者修复损坏文件等方法修复已发生的页面损坏。
计算checksum的算法是复杂的,因为会涉及到多个页面的读写,增加CPU的负荷,可能会影响系统的吞吐量
系统吞吐量、CPU负荷这个本人觉得可以忽略不计,因为用户数据库默认都是开启了checksum页面验证的
所以本人觉得还是有必要开启checksum页面验证
页面checksum的条件:在数据库页面从被写入磁盘到被SQL Server读取的这段时间内,数据页一定要写入到磁盘,
如果数据页面没有写入到磁盘,那么开启checksum也就没有什么用处
在tempdb里,无论是数据页还是索引页还是版本存储区里的页面都有可能写入磁盘
版本存储区的资料:
版本存储区也和数据页面索引页面一样由8k大小的页组成。这些页存在缓冲池中,可以在TempDB面临内存压力时被写入磁盘
如果是这样,那么SQLSERVER应该要开启tempdb数据库的checksum页面验证才对啊
很可惜,本人暂时还没有在网上找到相关解释
不过通过下面实验,本人猜测了一些SQLSERVER团队的意图
这些实验在文章SQL Server中tempdb的management里已经给出了,本人只是做一些补充
实验
以下实验的实验环境:Windows7,SQLSERVER2005个人开发者版
全局临时表
通过创建##t_tempdblog全局临时表,插入数据,修改数据,删除数据,建立聚集索引,删除聚集索引,建立非聚集索引,删除非聚集索引
查看事务日志文件里有没有相关的操作记录
测试脚本
插入记录
1 use tempdb ##t_tempdblog ##t_tempdblog (c1 int, c2 char(1000)) () ##t_tempdblog ), 1000)) operation,context, , , fn_dblog(null, null)

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

kvr800d2n6能和ddr3一起用吗不能。1.因为kvr800d2n6是DDR2类型的内存条,而DDR3则是另一种类型的内存条,两者并不兼容。2.虽然DDR2和DDR3的插槽形状相同,但是在电压、时序、传输速率等方面存在差异,因此不同类型的内存条不能互通。kvr800d2n6是几代内存条重新写内容时,需要将语言改为中文,并且不改变原本的意思kvr800为内存重新写内容时,需要将语言改为中文,并且不改变原本的意思(DDR2),内存主频是800mhz。kvr800d2n62g是金士顿KVR800

使用read_csv()读取CSV文件:df=pd.read_csv("data.csv")处理缺失值:移除缺失值:df=df.dropna()填充缺失值:df["column_name"].fillna(value)转换数据类型:df["column_name"]=df["column_name"].astype(dtype)排序和分组:排序:df.sort_values(by="column_name")分组:groupby_object=df.groupby(by="column_name

存储过程是预先编译并存储在数据库服务器上的sql语句。当需要执行存储过程时,只需要调用存储过程的名字即可,而不需要重新编写SQL语句。存储过程可以提高代码的可读性和效率,尤其是在需要执行复杂或重复的SQL语句时。1.创建存储过程CREATEPROCEDUREget_customer_by_id(INcustomer_idINT)BEGINSELECT*FROMcustomersWHEREcustomer_id=customer_id;END2.调用存储过程$stmt=$pdo->prepare(

Java的异常处理体系遵循一个层次结构,从最通用的Throwable类到更具体的子类,例如Exception和Error。了解这个层次结构至关重要,因为它决定了异常的处理方式和影响范围。二、掌握异常传播机制异常在程序中传播时,它会沿调用栈向上移动。如果未在代码中处理异常,它将被传播到调用它的方法,依此类推。掌握异常传播机制对于确保异常得到适当处理至关重要。三、使用try-catch-finally块try-catch-finally块是Java中处理异常的首选机制。try块包含需要执行的代码,而

变量声明确定变量名称、类型和作用域。Java支持原始(int、double、boolean)和引用(String、List)类型。二、控制流使用if/else、switch/case和循环(while、do-while、for)控制程序流。条件语句检查条件,分支语句根据条件执行不同的代码块。三、数组数组存储相同类型元素的集合。数组用类型[]声明,可以通过索引访问元素。四、类和对象类是蓝图,用于创建具有状态和行为的对象。对象是特定类的实例,可以访问该类的成员方法和变量。五、继承子类从父类继承字段和

逆战哪把ak最好一:AK47是一款非常著名的步枪,被广泛使用于世界各地的军队和恐怖组织。它以其出色的性能和可靠性而闻名,被誉为世界上最好的突击步枪之一。AK47的设计简单而实用,适合在各种恶劣环境下使用。它采用了7.62毫米口径的弹药,具有较高的射程和穿透力。AK47的制造成本低廉,易于维护和操作,因此广受欢迎。尽管它在设计上存在一些局限性,但它仍然是一把非常可靠和有效的武器。无论是军事行动还是个人防卫,AK47都是一个强大的选择。逆战中最经典的枪械无疑是AK47。在商城中,AK47的永久售价为

可见性:线程只能看到自己对共享变量所做的修改,而其他线程对共享变量的修改则需要通过某种同步机制才能被看到。原子性:一个操作要么完整执行,要么根本不执行,没有中间状态。有序性:线程对共享变量的操作必须按照一定的顺序执行,即使在不同的线程中也是如此。二、happens-before原则happens-before原则是JMM的核心规则之一,它定义了线程之间共享变量的访问顺序。根据happens-before原则,如果一个操作Ahappens-before另一个操作B,那么A对共享变量的修改一定会在B

1.线程同步概念:线程同步是指多个线程访问共享资源时,通过某种机制来协调它们的访问顺序和行为,以防止数据错乱和程序崩溃。2.同步机制:Java提供了多种同步机制,包括锁、同步方法、同步块、原子变量等。这些机制的作用都是为了确保共享资源在一个时刻只能被一个线程访问。3.锁:锁是一种常见的同步机制,它允许一个线程独占访问共享资源。当一个线程获得锁后,其他线程必须等待,直到该线程释放锁才能继续执行。4.同步方法和同步块:同步方法和同步块是通过在方法或代码块前加上synchronized关键字来实现的。
