笔记125 关闭数据库的数据页IO保护机制,即设置page_verify数据库选项为none SQL Server 简单模式下,误删除堆表记录如何恢复

笔记125 关闭数据库的数据页IO保护机制,即设置page_verify数据库选项为none SQL Server 简单模式下,误删除堆表记录如何恢复

 1 --关闭数据库的数据页IO保护机制,即设置page_verify数据库选项为none SQL Server 简单模式下,误删除堆表记录如何恢复
 2 
 3 http://www.cnblogs.com/SQLServer2012/archive/2013/01/17/2864880.html
 4 
 5 
 6 --关闭数据库的数据页I/O保护机制,即设置page_verify数据库选项为none
 7 
 8 ALTER DATABASE [GPOSDB] SET PAGE_VERIFY  NONE
 9 
10 
11 
12 
13 ALTER DATABASE [GPOSDB] SET PAGE_VERIFY CHECKSUM
14 ALTER DATABASE [GPOSDB] SET PAGE_VERIFY TORN_PAGE_DETECTION

mysql
double write buffer,双写
innodb存在partial write问题
目的/作用:保证数据写入的可靠性
防止数据页损坏,又无从修复
因为InnoDB有partial write问题
16K的页只写入了部分数据时发生crash
redo里记录的是逻辑操作,不是物理块,无法通过redo log恢复 crash recovery
操作系统的block是4KB,innodb页面是16KB,那么需要4次IO才能写入一个完整的页面

怎么解决partial write问题
双写,doublewrite
2个1M的空间,共2M(既有磁盘文件,也有内存空间)
页在写入时首先顺序地写入到doublewrite
然后再刷新回磁盘




double write
性能损失
double write写入是顺序的,性能损失很小
slave上可关闭
btrfs,zfs文件系统支持原子写,不用打开double write
ssd等支持原子写的存储设备不用打开double write
innodb_doublewrite=0
status
innodb_dblwr_pages_written
innodb_dblwr_writes
innodb_dblwr_pages_written:innodb_dblwr_writes=64:1(一次刷新64个脏页),当系统写入压力并不是很高时,应小于64:1

sqlserver2008数据库技术内幕
SQL Server将内存数据写入磁盘中的数据页时,一般以数据页为单位,而磁盘硬件和操作系统一般会以一个扇区(大小为512字节)为单位执行写入操作。
如果在数据写入磁盘过程中出现电源或磁盘故障,则可能导致只有数据页中的部分扇区写入而发生错误
8KB数据页-》 OS cache-》 512byte 16个扇区 -》disk

posted @ 2013-08-03 22:47 桦仔 阅读(...) 评论(...)  编辑 收藏