热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

擦亮自己的眼睛去看SQLServer之简单Insert-mysql教程

写事务日志:数据修改事务中唯一一个总是需要写入磁盘的操作。并不是修改查询语句的清单,而是修改操作发生之后数据页面的具体变化。是由日志管理器完成。看到写入磁盘,我们应该立刻联想到性能问题,因为这个操作是总是写入磁盘。如果一条语句的操作的数据

写事务日志 :数据修改事务中唯一一个总是需要写入磁盘的操作。并不是修改查询语句的清单,而是修改操作发生之后数据页面的具体变化。是由日志管理器完成。看到写入磁盘,我们应该立刻联想到性能问题,因为这个操作是总是写入磁盘。如果一条语句的操作的数据

  写事务日志:数据修改事务中唯一一个总是需要写入磁盘的操作。并不是修改查询语句的清单,而是修改操作发生之后数据页面的具体变化。是由日志管理器完成。看到写入磁盘,我们应该立刻联想到性能问题,因为这个操作是总是写入磁盘。如果一条语句的操作的数据很大的话,这个耗时是十分可怕的。

  举个例子:如果想知道这个差距,你可以在百万或者千万的表中执行以下两条语句体会以下:truncate table Test以及delete from Test。当然严谨的同学会说truncate是针对区操作,delete是针对页操作,truncate的锁消耗也比delete的锁消耗少。这些是会导致truncate比delete快的原因。但是这些原因不是主要原因,主要原因就是这里说的写事务日志,delete是每次删除一行,并在事务日志中为所删除的每行记录一项,而truncate是通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。既然事务日志会影响性能,为什么还记录呢?主要解决保护数据以及数据一致性的问题。

  接收写请求:一旦访问方法接收到写事务日志成功的确认信息,就会接收写请求,将写请求发送缓存区管理器。注意了,这里是把请求交给缓存区管理器,缓存区管理器只是操作缓存跟物理文件没有任何关系。这里强调的目的是,如果没有理解这里说的原理的话。你可能会为自己做了大量的插入操作,而数据文件的大小没有任何变化而感到匪夷所思。访问方法表面上起了请求传递的作用,其实它很智能,有一些比较复杂的算法来预测执行情况。

  插入缓冲池:缓冲区管理器在内存中插入数据,插入成功后将确认结果发送给访问方法,最终确认结果到达客户端。

  写入数据文件:这个步骤可以由两个组件任何一个完成。惰性写入器线程定期检查SQL Server空闲缓冲列表的大小,当这个值过低的时候,惰性写入器会扫描整个数据缓存,将所有一段时间没被使用的页面老化。如果找到一段时间没有被使用的脏页,惰性写入器则将其写入磁盘并且删除,然后将这个页面的内存空间标记为空闲空间。惰性写入器还会监测服务器上的空闲物理内存,如果内存很少它会将SQL Server的空闲缓冲列表释放给Windows,在SQL Server负载很重时,它还会在服务器有空闲物理内存且已给SQL Server分配的内存还没有达到我们配置的最大服务器内存(max server memory)时增加SQL Server的空闲缓冲列表以适应负载。

  检查点是检查点线程创建的一个时间点,将保证脏页都写入磁盘,并且在页面头将缓存中的这个页面标记为干净的页面,注意检查点是不删除脏页的。至于检查点的执行时间是要分几种情况的:如果你配置了recovery interval(min),就以这个为准。如果没有配置,并且这上一次检查点结束后写入的事务日志数据超过10MB,则大约每分钟启动一次。还比如,我们人为执行checkpoint执行,或者执行备份重启命令都会触发检查点。抛开我们人为操作,这个具体时间确实无法确定,SQL Server有内部启发算法控制这个值。不过我们可以开启一个跟踪标志3502能查看。这个跟踪标志在错误日志中记录了检查点的开始与结束为止。sql语句为:dbcc traceon(3502) 。

  三、结尾

  今天主要就是介绍了插入语句的执行过程,内容不多。你从这个过程中你会发现SQL Server真的很智能。比如这里的预写日志来保护数据,延迟将数据写入磁盘、预测SQL执行情况、监控负载调整内存等等。设计的都是那么巧妙,大家可以想想如果我们在设计自己的软件时是否可以参考和借鉴呢?

  今天分析就到此结束,文中如有描述不当的地方,欢迎指出。共同进步才是硬道理。

擦亮自己的眼睛去看SQLServer之简单Select

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
author-avatar
孟海滨_554
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有