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

SQLServer培训笔记(一)

好久没有参加技术方面的培训了,今天参加了SQLServer的培训,记点笔记吧。SQLServer的历史微软最开始是没有自己的数据库服务器的,而是和Sybase合作,微软出钱和人力和Sybase一起开发,实际上是为了从Sybase那里学东西。后来微软觉得学得差不多了,

好久没有参加技术方面的 培训 了,今天参加了SQLServer的 培训 ,记点 笔记 吧。 SQLServer的历史 微软最开始是没有自己的数据库服务器的,而是和Sybase合作,微软出钱和人力和Sybase一起开发,实际上是为了从Sybase那里学东西。后来微软觉得学得差不多了,

好久没有参加技术方面的培训了,今天参加了SQLServer的培训,记点笔记吧。

SQLServer的历史

微软最开始是没有自己的数据库服务器的,而是和Sybase合作,微软出钱和人力和Sybase一起开发,实际上是为了从Sybase那里学东西。后来微软觉得学得差不多了,就把人马拉回来自己做,Sybase里面也有些开发人员跳槽到了微软。因此,SQLServer6.5以前的版本中很多内容是和Sybase数据库类似的,连关键字都一样的。Sybase的数据库进程名字叫sqlserver,而微软的SQLServer的进程名字是sqlservr(少了个e)。这令Sybase很受伤。这就是微软的第一代SQLSever。

第二代SQLServer是SQLServer7.0和SQLSever2000,在SQLSer7.0和2000版本中,微软的主要工作是去Sybase化,不过在编辑器里面,Sybase数据库的某些关键字还是被高亮显示,但是已经不再是关键字了。这两个版本是用C++来实现的,增强了可靠性和安全性,集成了BI的功能。

第三代SQLServer是2005和2008和2008/R2,微软花了5年的时间,把代码用.Net来重新实现了(一些底层的库还是用C++实现的,主要是SQLOS里面的部分。感谢网友@揭巴 指正),2005实际发布时间是2006年,可见时间很赶。里面加入了Automatic Tuning的和降低了TCO (Total cost of ownership)。其中Automatic Tuning是个很好的功能,客户自己就能发现数据库系统中的问题,所以,系统的serviceability很重要。

SQLServer的发行版本(Edition),按照功能来分

  • 企业版 - 功能最强的版本,得花不少银子,有财力的大企业采用。
  • 标准版 - 功能稍微少些,给财力一般的中小企业采用。
  • 开发者版本 - 功能和企业版一样,不过只能开发人员在开发阶段使用。如果非要放到生产环境里面用也行,不过被微软逮住就被罚钱。
  • Express Edition - 免费的,功能受限制,主要用于低端的客户,比如开发个三国杀的游戏,在里面带个小数据库。

SQLSever的Build版本,补丁管理和支持策略

Build号很好理解,搞软件的都知道,通常每天都会出一个build,每次build的build号都不一样,所以通过build号是能准确区分SQLServer的信息的。在做任何调优工作之前,首先要搞清楚SQLServer的版本和build号,因为有些功能在低版本里面本来就不支持或者有已知问题的。

SQLServer的补丁有这样几类:

  • Hotfix - 通常在RTM后,发现了问题就发个hotfix来修复,hotfix不是一个完整的SQLServer安装程序,必须是已经安装了特定版本的SQLServer后才能安装。注意,装了hotfix后,SQLServer的build号会更新。
  • Cumulative Updates - hotfix发多了,把他们打个包来发布。
  • ServicePack (SP),把多个CU打包在一起。

通常的建议是没有问题的话,hotfix和CU就不要升级了,因为升级一次的代价蛮大的,需要做兼容性测试,但是SP是建议装上的。微软的支持策略是,上一个SP的支持将在新的SP发布后12个月结束,所以通常客户需要在12个月内升级新的SP。比如,如果SP2已经出了12个月,而你还在用SP1,微软是不提供服务的,除非你先升级到SP2,这样来降低他们的服务成本。

OLAP Vs OLTP

OLTP = Online Transaction Processing,在线的交易系统,比如淘宝,亚马逊,这样对数据的要求就数据库的插入,删除,更新的要求比较高,通常四种数据库操作各占25%,这种数据库系统的建模一般是ER模型,要满足3大范式。

OLAP = Online Analyze Processing,这种类型的系统主要是以查询操作居多,占到了95%以上,数据库采用Dimensional Modeling来建模,也就是BI系统,它是定期从交易的数据库中拉数据出了做分析,帮助领导们做决策。

在SQLServer的几大组件里面,Relationship Database Engine就是支持OLTP的。SSAS, SSIS和SSRS就是支持OLAP的。

  • SSAS - Analysis Service 做数据分析的组件
  • SSIS - Integration Service 把关系型数据库中的数据导入到SSAS里面,并做数据的清洗和重整。
  • SSRS - Reporting Service 提供前端报表的展现

虽然SSAS,SSIS,SSRS,和关系型数据库引擎都包含在SQLServer里面,但是它们实际上是独立的,如果分开的话就是两个产品。

SQLServer的架构

SQLServer的架构可以分成三个部分,

  • Query Compilation and Execution Engine - 主要是负责把SQL转成Execution Plan
  • Storage Engine - 执行Execution Plan?
  • SQLOS - 在OS的库上面做了一层抽象,提供给Storeage Engine使用,这样就能很方便地把数据库内部的状态给抓出来。

这里Execution Plan 很重要,它是SQL的一个中间结果,数据库引擎就是按照Execution Plan来执行SQL语句的,调优都是针对Execution Plan来调的。


SQLServer的数据文件和Log文件

在SQLServer里面,当开始一个事务的时候,它是异步地写数据文件,而同步地写transaction log,只有当log写完以后,才把一个transaction提交,这样来保证数据能回滚。所以,log文件可能是系统的一个瓶颈,应当放在速度比较快的磁盘上面。


今天还讲了,

  1. 数据库的调优,大致方向是利用SQLServer的自带的report功能,server side profiler, perfmon找到内存,CPU,IO消耗比较大的SQL语句,再看它的execution plan,然后再找对应的方法去解决。比如加index等,可以开启set statistics time/profile/io on来比较前后的效果。说来简单,做起来难。
  2. Cluster,这是一种HA的解决方案,可以有AP(一个坏了,另外一个顶上),AA和N+1的架构
  3. Replication: Publisher, Distributor and Subscriber的结构(支持1对多的复制,Distributor去拉数据,然后分发到subscriber那里去),P2P的结构(几个SQLServer内部全连接,只有一个写的入口)。
  4. Snapshot,和存储的snapshot很类似,采用copy on first write 的模式。
  5. 2008里面新的管理工具的一些特性。

总体感觉还不错,讲师长得像我一个同学。

推荐阅读
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 初探性能优化:入门指南与实践技巧
    在编程领域,常有“尚未精通编码便急于优化”的声音。为了从性能优化的角度提升代码质量,本文将带领读者初步探索性能优化的基本概念与实践技巧。即使程序看似运行良好,数据处理效率仍有待提高,通过系统学习性能优化,能够帮助开发者编写更加高效、稳定的代码。文章不仅介绍了性能优化的基础知识,还提供了实用的调优方法和工具,帮助读者在实际项目中应用这些技术。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 短信验证码安全性堪忧,多因素认证或成未来主流
    短信验证码安全性堪忧,多因素认证或成未来主流 ... [详细]
  • 如何在任意浏览器中轻松安装并使用VSCode——Codeserver简易指南
    code-server 是一款强大的工具,允许用户在任何服务器上部署 VSCode,并通过浏览器进行访问和使用。这一解决方案不仅简化了开发环境的搭建过程,还提供了高度灵活的工作方式。用户只需访问 GitHub 上的官方仓库(GitHub-coder/code-server),即可获取详细的安装和配置指南,快速启动并运行 code-server。无论是个人开发者还是团队协作,code-server 都能提供高效、便捷的代码编辑体验。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
author-avatar
兆龙77
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有