热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLServerOnLinux(19)——SQLServerOnLinux性能(5)——针对性能的配置(数据库层面)

本人新书上市,请多多关照:在配置完实例层面之后,就可以进行数据库层面的配置。实例层面使用的是ALTE

本人新书上市,请多多关照: 《SQL Server On Linux运维实战 2017版从入门到精通》

SQL Server On Linux(19)—— SQL Server On Linux性能(5)——针对性能的配置(数据库层面)

在配置完实例层面之后,就可以进行数据库层面的配置。实例层面使用的是ALTER SERVER,而数据库层面的配置使用的就是ALTER DATABASE这个T-SQL命令。

通常来说,数据库配置的内容集中在下图的【选项】部分

SQL Server On Linux(19)—— SQL Server On Linux性能(5)——针对性能的配置(数据库层面)

SQL Server On Linux(19)—— SQL Server On Linux性能(5)——针对性能的配置(数据库层面)

如上图,分为强制和简单两种选项,上一文提到的对ad hoc(即席查询)的plan cache优化的其中一个原因是它们并没有参数化。没有参数化会导致针对不同的 SQL 语句创建独立的执行计划并缓存。对于这个选项,SQL Server默认使用简单模式,但是简单模式当然无法应对绝大部分的情况,所以可以使用上图的图形化界面或者ALTER DATABASE SET PARAMETERIZATION FORCED。

那在什么时候应该使用强制呢?可以参考一些指标,如sys.dm_os_performance_counters中where object_name = SQLServer:SQL Statistics and counter_name = SQL Compilations/sec的值,如果出现高频率的编译,那么就适合进行参数化改造。其次就是对CPU使用率的监控,如果CPU平均利用率都很高,那么也可能需要考虑。

如果决定了进行参数化改造,可以使用下面语句查找相同的query hash值但有不同的cache的语句。但是在结果集里面,对于2、3次的那种可以先不考虑,应该着重关注那些非常高的(本人见过上千的),这类型就可以作为优先参数化的候选语句。

SELECT dest.text, deqs.query_hash, count (*) query_count
FROM sys.dm_exec_query_stats deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
GROUP BY (query_hash), dest.text
ORDER BY query_count DESC
GO

前面的方式对于2016之前的版本(最晚从2012开始,2008R2没研究),但是如果使用了SQL 2016及后续版本,有一个新功能来更好地处理这个问题,就是Query Store,具体使用后续再讲解。

最后针对参数化的问题,参数化最好的实现方式还是在前端应用程序,但是如果没法修改前端程序(如购买的软件),那么修改数据也不失为方案之一。但是再次提醒:只要不是默认值,那就要考虑适用场景!比如这个选项可能会降低查询的编译导致某些本身应该编译的语句没有得到编译,从而获取非最优的执行计划,最终影响性能。

READ_COMMITTED_SNAPSHOT

在本人经历里面,90%以上的性能问题都源自于阻塞,不过阻塞的根源却是多种多样的。如果出现了并发问题导致阻塞,那么可以尝试修改兼容级别。在修改之前可以先看看官方文档: 事务锁定和行版本控制指南 。很多时候,正是由于读写互相阻塞导致了会话阻塞的出现。把READ_COMMITTED_SNAPSHOT打开可以使得读操作移到快照中进行,快照内是已提交的数据,这样写操作就可以减少被阻塞的几率,不过这种实际上是把读负载移到TempDB中,所以TempDB更加需要合理配置和使用。除了读提交快照之外,还可以使用单纯的快照和行版本来减少这类阻塞,具体内容可以参阅官方文档: 了解快照隔离和行版本控制

SQL Server On Linux(19)—— SQL Server On Linux性能(5)——针对性能的配置(数据库层面)

SCOPED CONFIGURATION

这是从SQL Server 2016引入的新配置。在过去只能通过实例层面的配置或者使用跟踪标记来实现。比如前面提到的实例层面的max degree of parallelism,现在可以使用ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP=某个值来覆盖数据库层面的值。

另外还有一个可能要用到的就是 QUERY_OPTIMIZER_HOTFIXES,这个等于跟踪标记4199。用于启用查询优化器的hotfixes,但是这里仅仅是对语句级别,这样可以减少全局影响,更加细粒度和智能。完整的内容可以参看官方文档: ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)

这一篇简单介绍了在数据库层面针对性能的配置项,从SQL 2012开始,库和实例的关系已经不再那么紧密,所以在后续的版本中,不仅要对实例进行配置,也要对数据库进行配置。


以上所述就是小编给大家介绍的《SQL Server On Linux(19)—— SQL Server On Linux性能(5)——针对性能的配置(数据库层面)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
杨艳奎_718
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有