代码改变世界

SQL Server中GETDATE转换时间时注意事项

2020-03-28 12:26 by 潇湘隐者, 103 阅读, 收藏, 编辑
摘要:在SQL Server中,有时候查询数据时,需要限定查询时间范围。此时需要对时间进行运算, 如下所示: USE AdventureWorks2014;GOSELECT *FROM HumanResources.EmployeeWHERE ModifiedDate > GETDATE() - 20; 例如,获取前一天的时间,可以用下面这样的SQL语句。 SE... 阅读全文

SQL Server 2008 R2执行存储过程sp_MailItemResultSets引起大量PREEMPTIVE_OS_WAITFORSINGLEOBJEC等待

2020-03-24 23:44 by 潇湘隐者, 70 阅读, 收藏, 编辑
摘要:从监控工具DPA中发现一个数据库(SQL Server 2008 R2)的等待事件突然彪增,下钻分析发现数据库执行存储过程sp_MailItemResultSets时,引起了非常严重的等待(High Wait),而主要的等待事件为PREEMPTIVE_OS_WAITFORSINGLEOBJEC。 如下截图所示: 查询正在执行的SQL,发现会话正在执行下面SQL(存储过程sp_MailItemR... 阅读全文

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool

2020-03-16 11:55 by 潇湘隐者, 141 阅读, 收藏, 编辑
摘要:如果应用程序遇到了下面错误信息,那么意味着连接池(connection pool)的连接数量由于一些原因导致其超过了Max Pool Size参数的限制。 英文错误信息: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occ... 阅读全文

SQL Server 2014下Database Mail Engine进程消耗大量CPU资源

2020-03-12 23:36 by 潇湘隐者, 70 阅读, 收藏, 编辑
摘要:今天发现监控的一个SQL Server数据库实例的CPU有些异常,如下所示,系统消耗的CPU(O/S CPU Utilization)和数据库实例消耗的CPU(Instance CPU Utilization)有较大出入,登录服务器检查,发现Database Mail Engine进程消耗了20%作业的CPU资源。而且是持续消耗这么多CPU资源。 首先我想的是数据库是否... 阅读全文

CentOS 7上更改MySQL数据库存储目录浅析

2020-03-11 10:18 by 潇湘隐者, 193 阅读, 收藏, 编辑
摘要:个人之前总结过两篇文章“MySQL更改数据库数据存储目录”和“Ubuntu上更改MySQL数据库数据存储目录”,都是在工作中遇到相关案例后的一个简单总结。当初的经验不足,认知有限,所以现在来看来,当初的博文确实显得浅析和不够全面,这个也没有办法,当时有些环境或案例没有涉及过,所以文章很难面面俱到,略显单薄和浅显,这个也很正常。博客不是论文,只是个人的笔记和知识点的总结。而且是基于当时的认知的经... 阅读全文

SQL Server大表如何快速删除数据

2020-03-09 13:41 by 潇湘隐者, 280 阅读, 收藏, 编辑
摘要:在SQL Server中,如何快速删除大表中的数据呢? 回答这个问题前,我们必须弄清楚上下文环境和以及结合实际、具体的需求,不同场景有不同的应对方法。 1: 整张表的数据全部删除 如果是整张表的数据全部清空、删除,这种场景倒是非常简单,TRUNCATE TABLE肯定是最快的。 反而用DELETE处理的话,就是一个糟糕的策略。 2: 大表中删除一部分数据 对于... 阅读全文

RHEL Linux 7的防火墙firewalld学习总结

2020-03-01 23:28 by 潇湘隐者, 166 阅读, 收藏, 编辑
摘要:RHEL Linux 7的防火墙firewalld学习总结 本文介绍一下RHEL 7下的防火墙配置工具firewalld。 在RHEL 7之前,我们一般使用iptables防火墙管理工具,其实,iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务或程序。iptables服务会把配置好的防火墙策略交由内核层面的netf... 阅读全文

ORACLE中如何找出大表分布在哪些数据文件中?

2020-02-27 09:46 by 潇湘隐者, 192 阅读, 收藏, 编辑
摘要:ORACLE中如何找出大表分布在哪些数据文件中? 在ORACLE数据中,我们能否找出一个大表的段对象分布在哪些数据文件中呢? 答案是可以,我们可以用下面脚本来找出对应表的区、段分别位于哪些数据文件中 SET PAGESIZE 60;COL SEGMENT_TYPE FOR A12;COL FILE_NAME FOR A64;COL SEGMENT_NAME FOR A24;COL TAB... 阅读全文

SQL Server解惑——对象命名的唯一性小结

2020-02-21 11:48 by 潇湘隐者, 164 阅读, 收藏, 编辑
摘要:关于SQL Server数据库中的对象命名的唯一性问题。例如表、索引、约束等数据库对象,有时候DBA在做数据库维护时,经常要创建对象或重命名对象,此时就会遇到一个问题,对象命名的唯一性问题。虽然是一个小小的问题,估计不少人搞不清,在看文章前,你可以先回答几个问题 1: 表名在数据库是不是唯一? 不同的Schema下,是否可以存在同名的表? 2: 索引名在数据库是不是唯一? 不同的Sch... 阅读全文

ORACLE隐式类型转换

2020-02-16 13:03 by 潇湘隐者, 122 阅读, 收藏, 编辑
摘要:隐式类型转换简介 通常ORACLE数据库存在显式类型转换(Explicit Datatype Conversion)和隐式类型转换(Implicit Datatype Conversion)两种类型转换方式。如果进行比较或运算的两个值的数据类型不同时(源数据的类型与目标数据的类型),而且此时又没有转换函数时,那么ORACLE必须将其中一个值进行类型转换,使其能够运算。这就是所谓的隐式类型转... 阅读全文

You (oracle) are not allowed to use this program (crontab)

2020-02-15 23:13 by 潇湘隐者, 145 阅读, 收藏, 编辑
摘要:检查一台ORACLE数据库服务器的crontab作业(用户为oracle,实际环境中可能为oracle、也有可能是其它用户)时,发现出现下面提示信息: $ crontab -l You (oracle) are not allowed to use this program (crontab) See crontab(1) for more information 遇到这种情况,一般是... 阅读全文

SQL Server等待事件—PAGEIOLATCH_EX

2020-02-11 15:36 by 潇湘隐者, 108 阅读, 收藏, 编辑
摘要:什么是PAGEIOLATCH_EX等待事件? 下面我们将对PAGEIOLATCH_EX等待事件的相关资料做一个简单的归纳、整理。关于PAGEIOLATCH_EX,官方文档的简单介绍如下: PAGEIOLATCH_EX: Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The l... 阅读全文

ORACLE ANALYZE使用小结

2020-02-04 13:44 by 潇湘隐者, 112 阅读, 收藏, 编辑
摘要:ANALYZE的介绍 使用ANALYZE可以收集或删除对象的统计信息、验证对象的结构、标识表或cluster中的行迁移/行链接信息等。官方文档关于ANALYZE功能介绍如下: · Collect or delete statistics about an index or index partition, table or table partition, in... 阅读全文

为什么你SQL Server中SQL日期转换出错了呢?

2020-01-11 15:40 by 潇湘隐者, 277 阅读, 收藏, 编辑
摘要:开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。 SELECT CONVERT(DATETIME, '2020-01-13 6:46:42'); 如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面SQL语句,... 阅读全文

SQL Server误设置max server memory处理小结

2019-12-24 11:20 by 潇湘隐者, 343 阅读, 收藏, 编辑
摘要:昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI界面设置“max server memory”,即使你设置为10M大小,但是它会“悄悄”默认修改为128M,你用Profile跟踪或者设置后会发现,它偷偷“修改”了你的设置值(改为了128M... 阅读全文

Error: cannot fetch last explain plan from PLAN_TABLE

2019-12-23 15:08 by 潇湘隐者, 144 阅读, 收藏, 编辑
摘要:最近遇到了错误“Error: cannot fetch last explain plan from PLAN_TABLE”,于是稍微研究了一下哪些场景下碰到这种错误,具体参考下面案例: 1:忘记使用EXPLAIN PLAN放在SQL语句前面,然后使用使用SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)查看具体SQL的执行计划时,就会遇到错误“Error: c... 阅读全文

ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?

2019-12-10 14:06 by 潇湘隐者, 280 阅读, 收藏, 编辑
摘要:ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL_FUNCTION: SELECT SQL_ID, PLAN_HASH_VALUEFROM V$SQL_PLAN XWHERE X.FILTER_PREDICA... 阅读全文

SQL Server优化技巧——如何避免查询条件OR引起的性能问题

2019-11-22 15:48 by 潇湘隐者, 776 阅读, 收藏, 编辑
摘要:之前写过一篇博客“SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析”,里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的几种方法,其实还有一些方法可以用来优化这种问题,这里简单介绍一下。 如下所示,下面的SQL语句之所有出现这种写法,是因为程序的查询界面,可能有多个输入性的查询条件,往往用户只填了一个或部分查询条件(业务情况,应该不用... 阅读全文

MySQL能否授予查看存储过程定义权限给用户

2019-11-14 15:36 by 潇湘隐者, 921 阅读, 收藏, 编辑
摘要:在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA GRANT VIEW DEFINITION ON ProcedureName TO UserA; --用具体的存储过程名和账号替换 那么在MySQL中能否实现这个功能呢? 找了很多资料,没有看到有这方面的功能,... 阅读全文

MySQL解惑——GROUP BY隐式排序

2019-11-11 17:03 by 潇湘隐者, 1294 阅读, 收藏, 编辑
摘要:MySQL中GROUP BY隐式排序是什么概念呢? 主要是其它RDBMS没有这样的概念,如果没有认真了解过概念,对这个概念会感觉有点困惑,我们先来看看官方文档的介绍: 官方文档MySQL 5.7 Reference Manual中的“.2.1.14 ORDER BY Optimization”章节有如下介绍: GROUP BY implicitly sorts by default (th... 阅读全文

SQL Server解惑——为什么你的查询结果超出了查询时间范围

2019-11-10 15:40 by 潇湘隐者, 399 阅读, 收藏, 编辑
摘要:废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子。 USE AdventureWorks2014;GOSELECT * FROM [Person].[Person]WHERE ModifiedDate >= '2008-11-26 00:00:00:000' AND Modif... 阅读全文

MySQL的统计信息学习总结

2019-11-08 16:17 by 潇湘隐者, 617 阅读, 收藏, 编辑
摘要:统计信息概念 MySQL统计信息是指数据库通过采样、统计出来的表、索引的相关信息,例如,表的记录数、聚集索引page个数、字段的Cardinality....。MySQL在生成执行计划时,需要根据索引的统计信息进行估算,计算出最低代价(或者说是最小开销)的执行计划.MySQL支持有限的索引统计信息,因存储引擎不同而统计信息收集的方式也不同. MySQL官方关于统计信息的概念介绍几乎等同于无,不... 阅读全文

[翻译]——MySQL 8.0 Histograms

2019-11-07 23:27 by 潇湘隐者, 168 阅读, 收藏, 编辑
摘要:前言: 本文是对这篇博客MySQL 8.0 Histograms的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢! 英文原文地址:https://lefred.be/content/mysql-8-0-histograms/ 翻译原文地址:https://www.cnblogs.com/kerrycode/p/11817026.html 在... 阅读全文

Centos 7修改hostname浅析

2019-11-06 09:58 by 潇湘隐者, 460 阅读, 收藏, 编辑
摘要:之前写过一篇博客“深入理解Linux修改hostname”,里面总结了RHEL 5.7下面如何修改hostname,当然这篇博客的内容其实也适用于CentOS 6,但是自CentOS 7开始,已经跟CentOS 6已经有很大不同了,一直没有总结CentOS 7下修改hostname的相关知识点,今天恰好遇到了这个问题,处理完后遂总结一下。 CentOS 7中的启动跟CentOS 6有所区别,C... 阅读全文

MySQL的sleep函数的特殊特现象

2019-10-26 11:50 by 潇湘隐者, 482 阅读, 收藏, 编辑
摘要:MySQL中的系统函数sleep,实际应用的场景不多,一般用来做实验测试,昨天在测试的时候,意外发现sleep函数的一个特殊现象。如果在查询语句中使用sleep函数,那么休眠的时间跟返回的记录有关。如下测试所示: mysql> create table test(id int);Query OK, 0 rows affected (0.03 sec) mysql> select *,... 阅读全文

阿里云RDS for SQL Serrver关于权限的一个严重Bug

2019-10-23 23:35 by 潇湘隐者, 224 阅读, 收藏, 编辑
摘要:阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库。注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情说三遍。 例如,下面测试环境所示,RDS for SQL Server的数据库版本为SQL Server 2016 WEB,我们在控制平台的“账号管理”界面,创建一个数据库账号test2,如下... 阅读全文

SQL Server获取索引创建时间&重建时间&重组时间

2019-10-22 17:09 by 潇湘隐者, 343 阅读, 收藏, 编辑
摘要:之前写过一篇博客“SQL Server中是否可以准确获取最后一次索引重建的时间?“,里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?,当时得出的结论,答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。但是最近看到一篇博客“SQL Server... 阅读全文

SQL Server通过条件搜索获取相关的存储过程等对象

2019-10-22 12:05 by 潇湘隐者, 211 阅读, 收藏, 编辑
摘要:在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure)、函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程、函数是否调用了链接服务器(LINKED SERVER),我们如果从sys.sql_modules去搜索的话,如果有多个用户数据库,需要切换数据库,执行多次SQL语句。这些都是非常麻烦的事情。本着“模块化定制脚本,... 阅读全文

MySQL如何进行索引重建操作?

2019-10-20 09:32 by 潇湘隐者, 2686 阅读, 收藏, 编辑
摘要:在MySQL数据库中,没有类似于SQL Server数据库或Oracle数据库中索引重建的语法(ALTER INDEX ... REBUILD),那么在MySQL数据库中,是否有什么方式重建索引呢? 在官方文档中"2.11.10 Rebuilding or Repairing Tables or Indexes"中,提到下面三种方式可以Rebuild Index · Dump ... 阅读全文

SQL Server重建索引与重组索引会更新统计信息吗?

2019-10-15 08:58 by 潇湘隐者, 463 阅读, 收藏, 编辑
摘要:在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试、验证一下: 我们以AdventureWorks2014为测试环境,如下所示: Person.Person表的统计信息最后一次更新为2014-07-17 16:11:31,如下截图所示: DECLARE @table_name NVAR... 阅读全文