- 博客(207)
- 资源 (4)
- 收藏
- 关注
原创 基于规则引擎的SQL审核工具打造
SQL审核,是DBA工作是极其重要的一项工作,对于DDL,我们可能需要关注表结构设计、字段定义是否合理,对于DML,可能更关注也要关注操作是否合理且无风险(比如不带条件的DELETE这种大杀器),而对于DQL,我们可能需要关注更多的东西,比如不允许SELECT *,不允许超过多少个表的JOIN。这个是笔者最早做的SQL审核工具,使用的时间不长,解决了一部分人工审核的问题,正则表达式的最大问题显然是难于编写复杂的规则,而且维护难,能实现的功能有限。以笔者的经历而言,经历了三个阶段的SQL审核工具建设。
2023-03-05 12:23:53 919
原创 也谈 xtrabackup 的 DBD::mysql module is not installed 问题
xtrabackup 备提示 DBD::mysql module is not installed,是否一定要安装perl-DBD-MySQL呢?
2022-05-29 18:32:17 1371 1
原创 为 FETCH 子句提供的行数必须大于零
SQL Server从2012开始提供OFFSET FETCH子句,用于分页查询数据,最近遇到了一个问题,需要用到FETCHNEXT0,结果提示“为 FETCH 子句提供的行数必须大于零”,这才发现居然是不能使用0值的,不明白微软为啥要弄出这么一个限制。解决的办法,使用子查询,即类似于这样的写法:SELECT TOP0 * FROM(SELECT XXXX FETCH NEXT) D为什么一定要FETCH NEXT0呢?熟悉查询优化的同学都知道,使用OF...
2022-05-28 11:48:49 1785 3
原创 Mac book升级Win11到黑退
Mac book,bootcamp安装的Windows 10升级到Windows 11的升级体验,及回退到Windows 10,以及回退遇到的各种问题
2022-04-27 15:49:13 1804
原创 MySQL 8.0踩坑之双写负优化
最近,在MySQL中LOAD数据的时候遇到了一个诡异的问题,LOAD一个1G的文件(LOAD到表之后,表的数据文件约2G)。在5.7版本中一切正常,不到3分钟完成。将版本切换到8.0之后,性能急剧下降,1个小时也没有完成任务。 MySQL 5.7和8.0都使用的是同一台虚拟机,并且在部署MySQL时,都是基于相同的保存点进行,所以可以基本上可以排除是虚拟机和操作系统的问题。 通过对比5.7与8.0的配置,除了两者互不存在的一些配置项,以及一些明显与性能无关的...
2021-10-23 12:14:59 946
原创 pgsql在分区表与非分区表中自由切换
pgsql在版本10中推出了声明式分区表,算是让分区表这个功能走上了正轨。(之前的版本为继承+触发器,和SQL Server的分区视图有点像,算是粗制)。 随着其版本发展,功能也越来越强,但今天要介绍的是基础功能:如何优雅地在分区表和非分区表切换。 pgsql分区表有一个笔者非常喜欢的特性,分区列是自由的,不和唯一约束绑定,在诸如SQL Server、MySQL中,当你尝试把普通表转换为分区表时,会强制要求你把分区列加到唯一性约束中(主键、唯一约束/索引)...
2021-09-11 17:33:05 1178
原创 欢迎光临 https://github.com/zjcxc
在 github 上搭了个窝,欢迎大家光临zjcxc (github.com) 发布的第一个开源代码源自于对mysqldump的功能改造增强zjcxc/mysqldump (github.com)基于5.7.35 修改实现的功能:为 -A,--all-databases 选项增加数据库过滤(排除)功能 为 -w,--where 选项增加条件扩展,当指定的条件以#打头时,表示后面跟的是存储过程,由存储过程返回当前表的筛选条件。存储过程包含两个固定参数:dbnam...
2021-09-11 16:32:59 379
原创 让myqldump为不同的表使用不同的条件
mysqldump支持使用-w,--where参数为要dump的表定义条件,但这个条件是全局的。也就是说,无论你要dump的是单表,还是多表,所有的表都使用这个条件。 如果我们要dump多个表,并且不同的表要使用不同的条件,或者是仅想为dump中,某些表指定条件的情况下,dump就无法做到了。如果不考虑数据一致性,那么还可以根据条件分别导出各表。如果要保持所有表的数据一致性,那么除了分批,还要考虑追加dump过程中产生的binlog日志,这就比较头大了。 ...
2021-08-21 15:55:26 993 3
原创 Win10 中的一个端口占用问题
这是在Windows 10上配置Nginx时遇到的错误,当时没有去研究,今天在使用 golang 测试 ssh 端口转发时又遇到了这个问题,花了点jfu
2021-05-29 17:27:40 332 1
原创 记一次 Always on group 故障切换失败的处理
最近遭遇了一次有点奇怪的Always on group 故障切换,Always on group由两台SQL Server 2014组成,
2021-05-29 10:52:06 1290
原创 姿势很重要--记一次字符筛选的处理
最近处理了一个需求,找出数据中的所有生僻字,数据约1000万条,每条大约20多个字,结果文件500M。生僻字的判断标准是二级字库(600多个字)外的所有字都算生僻字。 最开始的想法很简单,两个循环:每条记录,针对二级字库中的每个字替换一次,输出结果。Powershell 脚本做这个操作So easy,跑起来之后,告知需求方第二天拿结果(1000万*6000的循环,想想也知道要跑很久)、 然后到了第二天,这个处理还没结束,由于没有输出进度,所以无法判断处...
2021-05-29 10:19:28 207
原创 mysqldump的几个坑
记录一下在mysqldump使用中遇到的几个坑。一号小坑(和中彩票差不多的机率会遇到):对象名中包含换行符,且dump包含 --routines 选项时,会出现类似下面的错误:---- Dumping routines for database 'a-- b'--mysqldump: Couldn't execute 'use `a\nb`': Unknown database 'a\nb' (1049)二号小坑(遇不遇得上看运气):由于mysqldump在导出数据时,是按show dat...
2020-12-05 18:19:38 1373
原创 说说阿里云RDS MySQL的一些缺点
RDS MySQL用了有一小段时间了,来说一说它的缺点(优点是不用我提的,它的文档、客服、技术支持人员都会告诉您) 首先说说它对比原版所做的优化改进,说到这方面的时候,应该会有很多人说,阿里的技术牛,他在这方面肯定做了很多优化,用RDS一定比官方的跑得快,但事实上,如果你真正看过它与官方版本的功能对比,你会发现,RDS所列出来的功能优势,是体现在外部功能扩展上,核心的优化并没有提(也许你会认为它是谦虚),但事实上,我们拿了一些常见的操作,在RDS与官方版本之间做对比,我们并...
2020-07-25 16:38:14 2465 1
原创 通用性能指标监控系统打造完工
服务器性能指标监控通常由IT负责,所以之前并没有打造自己的性能指标监控的考虑,最近需要做MongoDB的性能指标监控,也考虑到直接使用IT的监控系统的诸多不使得的地方,所以在这次花了些时间,直接打造了一款通用的性能指标监控系统。 整个监控系统分成三部分:数据采集、监控报表、监控报警数据采集: 数据采集使用集中采集方式,在一台服务器上采集所有需要监控的服务器信息,使用自己开发的程序,调用标准的命令(Powershell、sqlcmd、mongo、mysql、plink)做数据采...
2020-07-22 20:58:55 432
原创 记录一下这个有点绕的数据分配查询
在论坛上看到这样一个需求,有两个表,数据分别如下 表A (id, name, value ) (1, ‘A’, 2000), (2, ‘A’, 2000) 表B (id, a_name, name, value) (1, ‘A’, ‘A1’, 1000), (2, ‘A’, ‘A2’, 2000), (3, ‘A’, ‘A3’, 3000) 要求根据表A的 value 值,查询...
2018-08-25 13:20:35 1175 3
原创 忘记 SQL Server 管理员密码的处理
如果忘记 SQL Server 管理员密码,可以使用下面的方式处理 1. 使用 SQL Server 服务器计算机本地 Administrators 组的任何成员登录到 SQL Server 服务器 2. 确定忘记管理员密码的 SQL Server 服务 可以在服务(services.msc)里面查看,或者使用下面的 Powershell 命令 Get-Service | ? Displ
2017-12-23 11:56:23 10771 2
原创 MySQL中单句实现无限层次父子关系查询
在 SQL Server 中,使用 CTE 表达式很容易做到无限层次父子关系查询;在不支持CTE表达式的版本中,借助函数递归也可以轻松实现。 在 MySQL 中,这个需求的实例稍显复杂, MySQL 中没有支持递归的查询,没有表值函数,函数不支持递归,所以通常都是用循环实现,显得比较别扭。今天看到一个用单条语句实现的递归查询,想法独特,分享一下。表结构和数据CREATE TABLE table1(
2017-12-16 14:08:28 21891 17
原创 一个子查询引发的血案
最近再次看到一个帖子,说使用类似如下子查询删除数据,结果发现所有的数据都被删除了 DELETE FROM a WHERE id in ( SELECT id FROM b ) 粗看这是一个没有任何毛病的删除操作,只会删除 a,b 表 id 匹配的记录。但实际上这个查询暗藏杀机,如果 b 表恰好有数据,并且b表没有字段id,这个操作的结棍是什么? 很显然,如果b表没有id字段,并且有
2017-12-16 13:54:34 1851
原创 带进度的SQL Server FileStream存取
SQL Server FileStream 功能的详细参考联机帮助设计和实现 FILESTREAM 存储 这里只是把使用 Win32 管理 FILESTREAM 数据的代码调整了一下,实现带进度的存取,这对于存取较大的文件比较有意义 要使用FileStream,首先要在 SQL Server配置管理器中打开FileStream选项:SQL Server配置管理器–SQL Server服务
2015-12-08 13:42:17 7923 2
原创 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 (续)
在上一篇文章也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 中,我提到了隐式数据类型转换增加对于数据分布很不平均的表,评估的数据行数与实际值有很大出入的问题,进一步测试之后,我发现这种评估不准确性应该确实与猜测的一样,它使用了变量的评估方式
2015-07-03 16:58:57 6648
原创 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强
在 SQL Server 查询中,不经意思的隐匿数据类型转换可能导致极大的查询性能问题,在 SQL Server 2008 及之后的版本中,这种操作做了增强,但还是经常遇到有问题的时候
2015-07-02 17:49:32 6988
原创 Error: 7884, Severity: 20, State: 1
背景: 程序异常中断“TCPProvider, error: 0 - An existing connection was forcibly closed by the remotehost.”,手工执行查询没有问题,不过执行时间要几十秒。Trace程序的执行,发现要数十分钟,经了解,原因在于程序使用了SqlDataReader读取数据,并且在读取的过程中进行了一系列数据处理,
2014-11-21 16:31:57 9609
原创 初步了解更新锁(U)与排它锁(X)
一直没有认真觉察UPDATE操作的锁,最近在MSDN上看到一个问题,询问堆表更新的死锁问题,问题很简单,有类似这样的表及数据:CREATE TABLE dbo.tb( c1 int, c2 char(10), c3 varchar(10));GODECLARE @id int;SET @id = 0;WHILE @id 5BEGIN; SET
2014-05-28 17:13:46 20089 10
原创 无语,遭遇: Error: 605, Severity: 21, State: 3
最近遇到一个严重错误Error: 605, Severity: 21, State: 3.Attempt to fetch logical page (1:xxxxx) in database 2 failed. It belongs to allocation unit xxxxxnot to xxxxx.严重级别 21, 看起来非常吓人,根据联机帮助对该错误的描述说明http://techne
2013-12-09 17:10:42 10874 2
原创 如何使 SQL Server高效 -- 疑难(ITPUT 讨论汇总)
4、 在您的SQL Server使用过程中,有哪些令您非常困惑的性能问题 ?讨论汇总——综合l Tempdb方面的问题a) 行级和事务级的快照都存储在TEMPDB中 (不知架构为什么设计成这样),UNDO \ REDO 自然不太方便b) tempdb放了太多的功能,带来性能瓶颈个人观点: tempdb感觉确实是个瓶颈。每个版本几乎都会往tempdb里面多放一些东西,tempdb所承担
2013-05-27 16:03:16 7482 1
原创 如何使 SQL Server高效 -- 程序设计(ITPUT 讨论汇总)
3、 在设计数据库操作程序上,您认为应该注意哪些事项,以确保能够有效地使用数据库? 讨论汇总l 尽量缩小读写操作范围和可重复性, 可采用临时表或表变量等中间过程过渡l 缓存。在程序端缓存常用数据l )静态化。对应较稳定的数据,可以将它静态化存放,避免数据库访问l )参数化,将访问语句参数化或改为存储过程l 连接池,控制访问并并发数l 批量处理。将数据修改缓存一段时间后再一起写入
2013-05-27 15:53:48 9572
原创 如何使 SQL Server高效 --T-SQL(ITPUT 讨论汇总)
2、 您认为在T-SQL编写(包括存储过程、函数和视图)上,哪些因素会影响SQL Server效率?讨论汇总——索引使用l 没有索引或者没有用到索引、I/O吞吐量小、没有创建计算列导致查询不优化、锁或者死锁、查询语句不够优化等l 对大表而言。那些不走索引的语句,错误scan的语句,还有那些强制使用HINT的语句,可能会因为时间的推移,影响了SQL Server对最优计划的生成l 避
2013-05-27 15:47:54 12975 1
原创 如何使 SQL Server高效 -- 设计(ITPUT 讨论汇总)
1、 您认为在设计SQL Server对象时,主要会考虑哪些因素来避免出现性能问题? 讨论汇总——总体设计l 应该根据系统架构类型或主要操作进行有针对性的设计: 如 OLTP 、OLAP 、ETL 等l 逻辑清晰,使应用程序更便于开发。有良好的扩展性和维护性,减少数据冗余等l 在DB管理上,得从CPU、HDD配置着手,在DB开发上,从业务流程、逻辑、功能、DB结构、SQL指令准确设计
2013-05-27 15:41:22 11354
原创 为SSRS配置SMTP服务器身份验证
在SQL Server Reporting Services中,可以通过“Reporting Services 配置管理器”配置发送邮件的SMTP服务器,但无法显式配置登录SMTP服务器的用户名和密码,登录SMTP服务器使用的是启动Reporting Services服务的帐号。所以如果Reporting Services与SMTP在同一个域,那么可以把登录SMTP的域用户设置为Reporting
2013-03-20 16:46:57 9935 1
原创 扩展 sp_helpindex, 增加 INCLUDE 和筛选索引的筛选条件
SQL Server的系统存储过程似乎没有被重视,新版本的一些特性似乎没有在系统存储过程中体现出来,着实是一件比较郁闷的事。 下面的这个存储过程是对sp_helpindex的扩展,扩展增加两个索引的新特性信息:包含列和列筛选。使用方法和 sp_helpindex 一样,感兴趣的可以试一下。USE master;GO/*-- sp_helpindex 扩展--------------
2013-02-19 13:38:53 7246
原创 在 xml.value 中, XPath中使用 text() 函数的重要性
被多次问到,为什么在DBA的规范中,会要求在解析xml值时,value 方法的 XPath 中要加 text() 函数,看起来似乎加与不加得到的结果都是一样的。 下面的测试脚本说明使用 text() 的区别,以及为什么要求使用它。DECLARE @xml xmlSET @xml = N'b c';SELECT @xml.value('(/a)[1]', 'varchar(10)
2012-11-20 17:38:12 11234 1
原创 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
复制存储过程执行应用于事务复制中,当在发布服务器上执行配置的存储过程时,存储过程导致的数据变更不会做为多步骤事务发送到订阅服务器,而仅仅是把执行存储过程的命令发送到订阅服务器。 比如,如果你为一个100万条记录的表增加了一个字段,并且初始化为一个值,如果不使用复制存储过程执行的话,那么这个操作就会形成100万个更新操作发送到订阅服务器,订阅服务器将将进行100万次更新,这个操作通常
2012-11-02 18:06:54 6980
原创 XSL中实现用户筛选
在 XSL 中实现用户筛选,折腾了好久,总算是搞定了功能需求:有如下 xml ,拟做一个 XSL 文件做解析,解析的效果是在解析后的页面下,有个DropdownList ,它列出所有的Group/@name值,允许用户通过选择来筛选XSL最终展示出来的数据xml-stylesheettype="text/xsl" href="filter.xsl"?>root>groupname="group1"
2012-09-06 13:23:24 7125
原创 在 SQL Server 中使用 Windows 用户组的一些诡异问题
最近,在SQLServer中使用Windows用户组时,发现了一些比较诡异的问题。SQL Server版本:SQL Server 2008 R2问题1:Login failed for user 'xx\xx'操作描述: 在SQL Server中添加一个Windows用户,并且使用该用户连接SQLServer(Windows身份验证),登录失败,日志中出现如
2012-04-17 17:40:09 11031 4
原创 配置 SharePoint 2010 使用本机默认 SQL Server 实例
SharePoint 2010的安裝向导,仅具有极为有限的定制功能,里面有两种模式:n “独立”模式,会安装SQL Server 2008 Express做为数据库服务。不具有任何定制选项;n “服务器场”模式可以定制安装目录,里面的“独立”项和“独立”模式一样;“完整”模式不安装SQL Server Express,可以在安装完成后的配置向导中配置数据库服务
2011-06-08 15:53:00 15023 6
原创 锁不住的查询
环境: SQL Server 2005 or 2008最近在处理一个锁的问题时,发现一个比较郁闷的事,使用X锁居然无法锁住查询,模拟这个问题,可以使用如下T-SQL脚本来建立测试环境。USE master;GO IF @@TRANCOUNT > 0 ROLLBACK TRAN;GO -- ================================
2009-07-27 10:27:00 15316 51
原创 处理SQL 2008/08 中的OUTPUT与CHECK约束冲突的问题
在SQL Server 2005中,新增的OUTPUT子句极大地提高了数据转移的方便性,不过很遗憾的是, OUTPUT子句的输出表不能包含启用状态的CHECK约束。这未免让人觉得很不爽。不过,在实际使用过程中,却发现了一个很奇怪的问题,某些具有启用状态的CHECK约束的表确实无法用于OUTPUT子句,而某些表却是可以的,经过对比,发现了这个很奇怪现象的原因,使得可以把有启用状态的
2009-04-22 05:06:00 10609 4
Text Speech Source Code
2008-03-10
Text Speech
2008-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人