专注,勤学,慎思。戒骄戒躁,谦虚谨慎

just do it

导航

2020年4月21日 #

从创建索引过程中内存变化来看SQL Server与MySQL的内存淘汰算法

摘要: 在sqlserver中,几年之前就注意到一个现象:sqlserver中对一个大表创建索引或者rebuild索引的过程中,会引起内存剧烈的动荡,究其原因为何,这种现象到底正不正常,是不是sqlserver内存管理存在缺陷?另外,最近刚好想到跟MySQL对比一下类似操作引起的内存变化,测试MySQL会不 阅读全文

posted @ 2020-04-21 23:07 MSSQL123 阅读(748) 评论(0) 推荐(0) 编辑

2020年4月18日 #

关于MySQL死锁检测机制参数innodb_deadlock_detect设置的一点思考

摘要: 微信公众号中(这里)看到一个关于MySQL的innodb_deadlock_detect与并发相关的细节,觉得比较有意思,也即innodb_deadlock_detect这个参数的设置问题 死锁检测是一个MySQL Server层的自动检测机制,可以及时发现两个或者多个session间互斥资源的申请 阅读全文

posted @ 2020-04-18 12:04 MSSQL123 阅读(6459) 评论(0) 推荐(2) 编辑

2020年3月29日 #

一则MySQL派生表优化案例

摘要: 笔者最近遇到一则典型的因为sql中存在派生表造成的性能案例,通过改写SQL改善了的性能,但当时并没有弄清楚这其中的原因,派生表究竟是什么原因会导致性能上的副作用。说来也巧,很快就无意中就看到下文中的提到的相关的派生表的介绍以及其特性之后,才发现个中缘由,本文基于此,用一个非常简单的demo来演示该问 阅读全文

posted @ 2020-03-29 18:40 MSSQL123 阅读(2248) 评论(0) 推荐(3) 编辑

2020年3月22日 #

MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)

摘要: 网络上有很多MySQL表碎片整理的问题,大多数是通过demo一个表然后参考data free来进行碎片整理,这种方式对myisam引擎或者其他引擎可能有效(本人没有做详细的测试).对Innodb引擎是不是准确的,或者data free是不是可以参考,还是值得商榷的。本文基于MySQL的Innodb存 阅读全文

posted @ 2020-03-22 01:07 MSSQL123 阅读(4196) 评论(4) 推荐(4) 编辑

2020年1月6日 #

Redis主从结构主节点执行写入后wait命令对性能的影响

摘要: 这里的Redis主从结构可以是简单的主从,sentinel,redis cluster中的主从等。wait命令的作用:此命令将阻塞当前客户端,直到当前Session连接(主节点上)所有的写命令都被传送到指定数据量的slave节点。如果到达超时(以毫秒为单位),则即使尚未完全传送到达指定数量的salv 阅读全文

posted @ 2020-01-06 22:47 MSSQL123 阅读(1594) 评论(0) 推荐(0) 编辑

2020年1月1日 #

令人抓狂的redis和rediscluster Python驱动包的安装

摘要: 本文环境:centos 7,Python3编译安装成功,包括pip3,然后需要安装redis相关的Python3驱动包,本的redis指redis包而非redis数据库,rediscluster类似。 先理清楚几个概念1,redis包更准确地说是redis-py包,是Python连接Redis的驱动 阅读全文

posted @ 2020-01-01 19:00 MSSQL123 阅读(10619) 评论(4) 推荐(1) 编辑

2019年12月27日 #

基于Docker的Consul集群实现服务发现

摘要: 服务发现 其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系,以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的。比如说一个数据集群中,可以分为读节点或者写节点,写节点和读节点都是相对的,不是硬绑定的,某一个逻辑节 阅读全文

posted @ 2019-12-27 15:14 MSSQL123 阅读(871) 评论(0) 推荐(0) 编辑

2019年12月18日 #

应用中引入缓存层后,缓存和持久化层数据一致性的思考

摘要: 一个应用中决定加缓存(Redis,memcached)之前,要考虑的第一个问题就是,引进了缓存之后,会带来哪些收益(利),付出哪些代价,引起哪些额外的问题(弊)? 任何新的中间件引进,收益和成本都是伴随的,只有当利大于弊的情况下,能够容忍其弊端(彻底解决?没有额外代价又没有负面影响,是不可能的,那就 阅读全文

posted @ 2019-12-18 19:24 MSSQL123 阅读(842) 评论(0) 推荐(1) 编辑

2019年12月12日 #

Redis中几个简单的概念:缓存穿透/击穿/雪崩,别再被吓唬了

摘要: Redis中几个“看似”高大上的概念,经常有人提到,某些好事者喜欢扣概念,嘴巴里冒出来的全是高大上的名词(互联网八股文???),呵呵! 其实这几个概念:缓存穿透/缓存击穿/缓存雪崩,有一个共通的相似之处,就是高并发下,某些原因导致缓存层失去了保护,导致后端的持久化层(数据库)承担较大压力的情形。需要 阅读全文

posted @ 2019-12-12 10:17 MSSQL123 阅读(888) 评论(3) 推荐(2) 编辑

2019年12月10日 #

Redis Cluster 自动化安装,扩容和缩容

摘要: Redis Cluster 自动化安装,扩容和缩容 之前写过一篇基于python的redis集群自动化安装的实现,基于纯命令的集群实现还是相当繁琐的,因此官方提供了redis-trib.rb这个工具虽然官方的的redis-trib.rb提供了集群创建、 检查、 修复、均衡等命令行工具,之所个人接受不 阅读全文

posted @ 2019-12-10 20:18 MSSQL123 阅读(2587) 评论(0) 推荐(0) 编辑

2019年11月27日 #

mysql 8.0 忘记root密码后重置

摘要: 最近状态很不好,一直晕晕晕晕晕晕乎乎的,一个测试实例,下班前修改了一下root的密码,接着就下班走人,第二天来发现root密码忘了 刚好自动化安装脚本整理好了,本来想着算了直接重装实例得了,简单省事也花不了半分钟,反正是测试实例,没什么大问题发现有些思维定势,所以最近一直暗示自己要做一些一上来就排斥 阅读全文

posted @ 2019-11-27 20:45 MSSQL123 阅读(5723) 评论(0) 推荐(1) 编辑

2019年11月26日 #

MySQL 8.0部分弃用的参数整理

摘要: 最近整理了一下MySQL 8.0的自动化安装,其中用到了一个MySQL 5.7版本的自定义配置文件,由于没有对(MySQL 8.0)做针对性修改,导致安装过程中出现了一些错误其中部分原因就是MySQL 5.7时代的配置在MySQL 8.0不再被支持,同时某些参数不再建议使用,如果继续保留在配置文件中 阅读全文

posted @ 2019-11-26 09:56 MSSQL123 阅读(3960) 评论(0) 推荐(2) 编辑

2019年11月5日 #

MySQL Online DDL与DML并发阻塞关系总结

摘要: MySQL DDL操作执行的三种方式 1,INPLACE,在进行DDL操作时,不影响表的读&写,可以正常执行表上的DML操作,避免与COPY方法相关的磁盘I/O和CPU周期,从而最小化数据库的总体负载。 最小化负载有助于在DDL操作期间保持良好的性能和高吞吐量。 2,COPY,不允许并发执行过多个D 阅读全文

posted @ 2019-11-05 21:34 MSSQL123 阅读(1604) 评论(0) 推荐(0) 编辑

2019年10月31日 #

MySQL Error Log 文件丢失导致The server quit without updating PID file启动失败的场景

摘要: 今天在做mysql sniff测试的时候,中间重启MySQL实例的过程中,出现了"The server quit without updating PID file"这个经典的错误。因为把mysql sniff的日志文件放在了mysql实例的目录中,因此删除mysql sniff日志的时候无意中删除 阅读全文

posted @ 2019-10-31 20:02 MSSQL123 阅读(527) 评论(0) 推荐(0) 编辑

MySQL删除大表时潜在的问题(drop table,truncate table)

摘要: 来源于:https://www.cnblogs.com/CtripDBA/p/11465315.html,侵删,纯截图,避免吸引流量之嫌 case1,删除大表时,因为清理自适应hash索引占用的内容导致的MySQL服务挂起 来源:https://keithlan.github.io/2018/03/ 阅读全文

posted @ 2019-10-31 09:23 MSSQL123 阅读(3244) 评论(0) 推荐(0) 编辑

2019年9月26日 #

python快速导出sql语句(mssql)的查询结果到Excel,解决SSMS无法加载大字段的问题

摘要: 遇到一个尴尬的问题,SSMS的GridView对于大字段的(varchar(max),text之类的),支持不太友好的,超过8000个长度之外的字符,SSMS的表格是显示不出来的(当然也就看不到了),也是无法直接导出来的(超过8000个之外的字符的)这种问题在别人遇到来求助的时候,是不可忍受的,于是 阅读全文

posted @ 2019-09-26 19:28 MSSQL123 阅读(1533) 评论(0) 推荐(1) 编辑

2019年9月24日 #

追踪SQL Server执行delete操作时候不同锁申请与释放的过程

摘要: 一直以为很了解sqlserver的加锁过程,在分析一些特殊情况下的死锁之后,尤其是并发单表操作发生的死锁,对于加解锁的过程,有了一些重新的认识,之前的知识还是有一些盲区在里面的。delete加锁与解锁步骤是怎么样的?什么时候对那些对象,加什么类型的琐,加锁与索引的关系是怎么样的,什么时候释放锁?整个 阅读全文

posted @ 2019-09-24 20:44 MSSQL123 阅读(1791) 评论(0) 推荐(2) 编辑

2019年9月23日 #

基于Redis扩展模块的布隆过滤器使用

摘要: 什么是布隆过滤器?它实际上是一个很长的二进制向量和一系列随机映射函数。把一个目标元素通过多个hash函数的计算,将多个随机计算出的结果映射到不同的二进制向量的位中,以此来间接标记一个元素是否存在于一个集合中。布隆过滤器可以做什么?布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查 阅读全文

posted @ 2019-09-23 23:13 MSSQL123 阅读(3374) 评论(0) 推荐(0) 编辑

2019年9月18日 #

Redis自动化安装以及集群实现

摘要: Redis实例安装 安装说明:自动解压缩安装包,按照指定路径编译安装,复制配置文件模板到Redis实例路的数据径下,根据端口号修改配置文件模板 三个必须文件:1,配置文件,2,当前shell脚本,3,安装包 参数1:basedir,redis安装包路径 参数2:安装实例路径 参数3:安装包名称 参数 阅读全文

posted @ 2019-09-18 17:36 MSSQL123 阅读(963) 评论(0) 推荐(1) 编辑

2019年9月2日 #

MySQL Error Log 中IO写入瓶颈的警告分析

摘要: 周末在一台MySQL实例上频繁做大批量的写入测试,无意中发现MySQL的errorlog中频繁出现如下的Note:page_cleaner: 1000ms intended loop took **** ms. The settings might not be optimal. (flushed= 阅读全文

posted @ 2019-09-02 12:39 MSSQL123 阅读(3508) 评论(1) 推荐(1) 编辑

2019年9月1日 #

利用MySQL系统数据库做性能负载诊断

摘要: 某DBA大师曾说过,一个DBA要像了解自己的老婆一样了解自己管理的数据库,个人认为包含了两个方面的了解: 1,在稳定性层面来说,更多的是关注高可用、读写分离、负载均衡,灾备管理等等high level层面的措施(就好比要保证生活的稳定性) 2,在实例级别的来说,需要关注内存、IO、网络,热点表,热点 阅读全文

posted @ 2019-09-01 19:30 MSSQL123 阅读(1384) 评论(1) 推荐(1) 编辑

2019年8月24日 #

MySQL MGR集群单主模式的自动化搭建和自动化故障修复

摘要: 随着MySQL MGR的版本的升级以及技术成熟,在把MHA拉下神坛之后, MGR越来越成为MySQL高可用的首选方案。MGR的搭建并不算很复杂,但是有一系列手工操作步骤,为了简便MGR的搭建和故障诊断,这里完成了一个自动化的脚本,来实现MGR的自动化搭建,自动化故障诊断以及修复。 MGR自动化搭建为 阅读全文

posted @ 2019-08-24 17:54 MSSQL123 阅读(2086) 评论(1) 推荐(1) 编辑

2019年8月3日 #

MySQL集群读写分离的自定义实现

摘要: 基于MySQL Router可以实现高可用,读写分离,负载均衡之类的,MySQL Router可以说是非常轻量级的一个中间件了。看了一下MySQL Router的原理,其实并不复杂,原理也并不难理解,其实就是一个类似于VIP的代理功能,其中一个MySQL Router有两个端口号,分别是对读和写的转 阅读全文

posted @ 2019-08-03 22:27 MSSQL123 阅读(1297) 评论(0) 推荐(0) 编辑

2019年8月1日 #

基于Python和Xtrbackup的自动化备份与还原实现

摘要: xtrabackup是一个MySQL备份还原的常用工具,实际使用过程应该都是shell或者python封装的自动化脚本,尤其是备份。对还原来说,对于基于完整和增量备份的还原,还原差异备份需要指定增量备份等等一系列容易出错的手工操作,以及binlog的还原等,如果纯手工操作的话非常麻烦。即便是你记性非 阅读全文

posted @ 2019-08-01 19:59 MSSQL123 阅读(1785) 评论(2) 推荐(2) 编辑

2019年7月30日 #

MySQL相关参数总结

摘要: 保留个原文链接,避免被爬虫爬了过去,以便后续更正补充:https://www.cnblogs.com/wy123/p/11273023.html MySQL参数繁多,是一个需要根据具体业务、软硬件环境、负载压力、性能需求、数据异常的容忍程度等等信息综合考量的结果,不是一成不变的(当然,某些参数保持默 阅读全文

posted @ 2019-07-30 23:27 MSSQL123 阅读(1556) 评论(0) 推荐(1) 编辑

2019年7月13日 #

Redis中的Stream数据类型作为消息队列的尝试

摘要: Redis的List数据类型作为消息队列,已经比较合适了,但存在一些不足,比如只能独立消费,订阅发布又无法支持数据的持久化,相对前两者,Redis Stream作为消息队列的使用更为有优势。 相信球迷小伙伴们对文字直播这个东西都不陌生,时常在想,这个功能是怎么实现的? 具体说就是用什么技术实现最为合 阅读全文

posted @ 2019-07-13 13:43 MSSQL123 阅读(5956) 评论(0) 推荐(3) 编辑

2019年7月6日 #

漫谈Redis分布式锁实现

摘要: 在Redis上,可以通过对key值的独占来实现分布式锁,表面上看,Redis可以简单快捷通过set key这一独占的方式来实现,也有许多重复性轮子,但实际情况并非如此。总得来说,Redis实现分布式锁,如何确保锁资源的安全&及时释放,是分布式锁的最关键因素。如下逐层分析Redis实现分布式锁的一些过 阅读全文

posted @ 2019-07-06 18:40 MSSQL123 阅读(1266) 评论(0) 推荐(1) 编辑

2019年6月12日 #

基于Python的SQL Server数据库对象同步轻量级实现

摘要: 缘由 日常工作中经常遇到类似的问题:把某个服务器上的某些指定的表同步到另外一台服务器。类似需求用SSIS或者其他ETL工作很容易实现,比如用SSIS的话就可以,但会存在相当一部分反复的手工操作。建源的数据库信息,目标的数据库信息,如果是多个表,需要一个一个地拉source和target,然后一个一个 阅读全文

posted @ 2019-06-12 14:05 MSSQL123 阅读(2528) 评论(2) 推荐(3) 编辑

2019年5月31日 #

Redis中的Scan命令的使用

摘要: Redis中有一个经典的问题,在巨大的数据量的情况下,做类似于查找符合某种规则的Key的信息,这里就有两种方式,一是keys命令,简单粗暴,由于Redis单线程这一特性,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产 阅读全文

posted @ 2019-05-31 15:16 MSSQL123 阅读(51181) 评论(1) 推荐(1) 编辑

2019年5月29日 #

Redis集群模式下的redis-py-cluster方式读写测试

摘要: 与MySQL主从复制,从节点可以分担部分读压力不一样,甚至可以增加slave或者slave的slave来分担读压力,Redis集群中的从节点,默认是不分担读请求的,从节点只作为主节点的备份,仅负责故障转移。如果是主节点读写压力过大,可以通过增加集群节点数量的方式来分担压力。 以下简单测试Redis集 阅读全文

posted @ 2019-05-29 21:34 MSSQL123 阅读(1984) 评论(0) 推荐(0) 编辑

2019年5月28日 #

sqlserver 筛选索引(filter index)在使用时需要注意的事项

摘要: sqlserver 的筛选索引(filter index)与常规的非筛选索引,加了一定的filter条件,可以按照某些条件对表中的字段进行索引,但是filter 索引在查询 使用上,并不等同于常规的索引,如果忽略了这些差异,可能会造成潜在的问题,因此在使用filter索引的时候,一定要结合具体的查询 阅读全文

posted @ 2019-05-28 21:29 MSSQL123 阅读(2037) 评论(0) 推荐(0) 编辑

2019年5月14日 #

sqlserver默认隔离级别下并发批量update同一张表引起的死锁

摘要: 提到死锁,最最常规的场景之一是Session1 以排它锁的方式锁定A表,请求B表,session2以排它锁的方式锁定B表,请求A表之类的,访问顺序不一致导致死锁的情况本文通过简化,测试这样一种稍显特殊的场景:对同一张表,并发update其中的多行记录引起的死锁,同时简单分析,对于update操作的加 阅读全文

posted @ 2019-05-14 23:38 MSSQL123 阅读(3898) 评论(2) 推荐(3) 编辑

2019年5月11日 #

sqlserver的表变量在没有预估偏差的情况下,与物理表可join产生的性能问题

摘要: 众所周知,在sqlserver中,表变量最大的特性之一就是没有统计信息,无法较为准备预估其数据分布情况,因此不适合参与较为复杂的SQL运算。当SQL相对简单的时候,使用表变量,在某些场景下,即便是对表变量的预估没有产生偏差的情况下,仍旧会有问题。sqlserver的优化引擎对于表变量的支持十分不友好 阅读全文

posted @ 2019-05-11 00:35 MSSQL123 阅读(593) 评论(0) 推荐(0) 编辑

2019年1月27日 #

Redis集群以及自动故障转移测试

摘要: 在Redis中,与Sentinel(哨兵)实现的高可用相比,集群(cluster)更多的是强调数据的分片或者是节点的伸缩性,如果在集群的主节点上加入对应的从节点,集群还可以自动故障转移,因此相比Sentinel(哨兵)还是有不少优势的。以下简单测试Redis的集群(单机多实例的模式),来体验一下集群 阅读全文

posted @ 2019-01-27 14:27 MSSQL123 阅读(5523) 评论(2) 推荐(1) 编辑

2019年1月14日 #

MySQL 复制 crash safe salve参数配置

摘要: 在基于binlog文件位置的复制下,要保证crash safe slave,配置下面的参数即可。relay_log_info_repository = TABLErelay_log_recovery = ON这样可行的原因是,relay_log_info_repository = TABLE时,ap 阅读全文

posted @ 2019-01-14 16:48 MSSQL123 阅读(209) 评论(0) 推荐(0) 编辑

2019年1月1日 #

如何监控Redis性能指标(译)

摘要: Redis给人的印象是简单、很快,但是不代表它不需要关注它的性能指标,此文简单地介绍了一部分Redis性能指标.翻译过程中加入了自己延伸的一些疑问信息,仍然还有一些东西没有完全弄明白。原文中Metric to watch *** 和 Metric to alert on ***这里翻译为需要观察的指 阅读全文

posted @ 2019-01-01 10:31 MSSQL123 阅读(6250) 评论(1) 推荐(2) 编辑

2018年12月31日 #

Windows下pip 离线包安装

摘要: pip在线安装十分方便,有时候某些服务器并没有直接联网,需要下载好安装包上传到服务器上进行安装,不经常用,还是有点小麻烦的。 安装Python之后,将下载好的安装包包放在Python安装的根目录下使用pip install packagename 安装,提示Requirement 'pymssql- 阅读全文

posted @ 2018-12-31 12:19 MSSQL123 阅读(2434) 评论(0) 推荐(0) 编辑

2018年11月30日 #

MongoDB主从复制和副本集

摘要: MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选。对于简单的主从复制无法自动故障转移的缺陷,各个数据库都在改进,MySQL推出的MGR,Redis的哨兵,Mongodb的复制集。 对于 阅读全文

posted @ 2018-11-30 08:43 MSSQL123 阅读(3261) 评论(0) 推荐(1) 编辑

MongoDB 集合(Collection)对应的物理文件

摘要: dbpath下是清一色的collection-n-***与index-n-***开头的物理文件,如何知道某一个集合与其对应与其对应的物理文件? db.collection_name.stats() 返回的结果包含集合数据对应的物理文件 db.collection_name.stats({indexD 阅读全文

posted @ 2018-11-30 08:36 MSSQL123 阅读(2542) 评论(0) 推荐(0) 编辑

2018年11月8日 #

Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)

摘要: Redis的哨兵机制中,如果是多哨兵模式,哨兵节点之间也是可以相互感知的,各种搜索之后出来的是千篇一律的一个基础配置文件,在配置当前哨兵节点的配置文件中,并没有配置其他哨兵节点的任何信息。如下是一个哨兵节点的配置信息,可以看到,哨兵与哨兵之间没有任何配置,死活想不明白,哨兵之间是如何自动识别的。 参 阅读全文

posted @ 2018-11-08 15:58 MSSQL123 阅读(4895) 评论(0) 推荐(1) 编辑