摘要: 从某个时间开始,Cat监控到的数据发现,正式环境的Insert 表很慢,数据库用了AlwasON高可用(1个备库做了实时同步),特别是每天早上9:00--11:00,做活动的时候,下单的insert需要1秒,有些有3秒的,而且是大量出现 很多简单的insert也有。从8月份就一直就有问题,严重影响业阅读全文
posted @ 2018-12-12 20:03 zping 阅读(298) 评论(0) 编辑
摘要: 前段时间,我们去回访客户,看了今年上半年优化的一个系统,看看性能怎么样。去了以后,客户反映感觉还可以,不慢,就是说这段时间数据库服务器的CPU有时超过了90%,会持续一段比较长的时间,可能有几十分钟。 下午,就发现这时候数据库服务器的CPU一直在90%以上。通过sql server profile也没查出什么问题。觉得操作很正常,后来通过DMVs发现,执行我以前改写的几个存储过程,执行次数比较多,...阅读全文
posted @ 2008-11-18 21:54 zping 阅读(2167) 评论(9) 编辑
摘要: 上周五,公司的同事,从客户那边回来,说一个人员选择页面很慢,页面打开需要15s左右,后来自己也试了一下,也的确需要比较长的时间,客户反应比较强烈。 通过DMV查出缓慢的两个语句如下:语句一:[代码] 语句二:[代码] 查询的两个表的数据量: 表humres: 1920 行 ,191次IO 表orgunitlink:256 行, 11 次IO 最大表才不到2000行数据,查询为何如此慢。看看执...阅读全文
posted @ 2008-11-17 15:24 zping 阅读(2556) 评论(3) 编辑
摘要: 今天下午,我们搭建了测试服务器,客户的两个管理人员,正在不停的添加数据,突然说页面打开错误,同时添加数据很慢,这时通过监控数据库服务器发现sql语句发现执行正常,但是客户的页面打不开。这时由于JBOSS服务器和数据库服务器都是放在一个服务器上,这时我看看内存和CPU,发现CPU占用100%,一般都在98%以上。这时很奇怪了,sql语句执行都比较快,为何内存占用98%居高不下,而且服务器还是中午重新...阅读全文
posted @ 2008-09-24 20:47 zping 阅读(3945) 评论(10) 编辑
摘要: 从上海来到温州,看了前几天监控的sql语句和数据变化,发现有一条语句的io次数很大,达到了150万次IO,而两个表的数据也就不到20万,为何有如此多的IO次数,下面是执行语句:[代码] 执行IO统计结果如下:[代码] 执行计划如下: 这里发现:主要是嵌套循环算法占的开销最大。个人感觉是“Or”引起的性能问题,后来根据业务逻辑改写。如下: 语句修改如下: [代码] 查询IO...阅读全文
posted @ 2008-09-23 16:53 zping 阅读(11163) 评论(28) 编辑
摘要: 今天客户系统升级,通过DMVs性能分析查了一下,升级后发现一个语句执行时间比较长,执行语句要好几秒钟,调出语句如下:[代码] 后来看了一下,这几表的数据[代码] 发现这三张表都没有超过1千行数据,建立索引意义不大,为何如此慢,看看执行计划: 分析:发现是表dbo.uft3a6h61176948132312访问开销最大,但表中数据不到一千行。执行看看结果:[代码] 这里发现表uft3a6h6117...阅读全文
posted @ 2008-09-15 20:15 zping 阅读(18078) 评论(19) 编辑
摘要: 前几天,远离上海,到了温州,在客户的这边处理系统慢,该系统每天正常down机7次左右,在线人员一多,系统运行缓慢,严重影响业务操作,到了无法忍耐的地步,这几天一直在这边处理优化中的问题和升级系统。将这些优化办法和思路记录下来,给大家在以后优化系统中提供思考和建议。 这几天都在通过执行计划来优化索引: 1,首先通过DMVs性能视图来查看那些性能问题是可以通过索引来优化的。先在生产数据库里执行下列查询...阅读全文
posted @ 2008-09-11 15:51 zping 阅读(4722) 评论(12) 编辑
摘要: Sql Server 2005有分区功能,但Oracle已经有了组合分区功能,sql server 2005如何实现,能实现吗?在Oracle 10g中,有rang-list/hash分区,在SQL server 2005中可以实现Range和list,可以和oracle一样实现复合分区。 在上一次优化中,客户使用的是SQL server 2005的标准版,由于标准版没有提供分区功能,后来使用了分...阅读全文
posted @ 2008-09-08 16:32 zping 阅读(1843) 评论(0) 编辑
摘要: 在查询优化中,有一个重要的概念:空间换取查询时间这一理论最好的应用就是:数据仓库(OLAP):在海量数据库里(一般是TB级)分析数据,通过对数据的ETL和计算汇总,得到有用的数据,并通过不同维度查看统计数据(一般比较少),实现上钻和下钻分析数据。 现在讨论一下在OLTP系统中空间换取查询时间常用的几个方法: 1,增加冗余表(计算汇总表) 2,增加冗余字段(包括计算字段) 3, 增加索引(包括计算索...阅读全文
posted @ 2008-09-04 17:38 zping 阅读(4214) 评论(9) 编辑
摘要: 前段时间提到的"SQL Server 2005 死锁解决探索",死锁严重,平均每天会发生一次死锁,在解决和处理SQL server2005死锁中查了很多资料和想了很多办法, 对为何出现死锁和怎样较少死锁有了进一步认识,在这里和大家一起分享: SQL Server 锁类型 在数据库中主要存在两种锁: S(共享锁)和X(排他锁) S(共享锁):在执行查询数据时,SQL server会将行锁定,这时只能...阅读全文
posted @ 2008-08-29 17:37 zping 阅读(1170) 评论(0) 编辑
摘要: 当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的。这时你要考虑业务逻辑优化和表设计的重构。这两点的确和设计结合的很紧密。 业务逻辑优化 结合实际,我们先谈谈业务逻辑优化。 案例一:我们的系统一个文档模块,客户点击时很慢,通过性能分析,是点击是去查询数据库,这时系统是通过Hibernate来两步处理: 1,计算该类型的文档数量总数。 2,显示最新文档的前20...阅读全文
posted @ 2008-08-25 13:36 zping 阅读(2916) 评论(9) 编辑
摘要: 今天在itput上看了一篇文章,是讨论一个语句的优化: 原贴地址: http://www.itpub.net/viewthread.php?tid=1015964&extra=&page=1 一,发现问题 优化的语句: [代码] 以上就是优化的需要优化的语句和情况。 不少人在后面跟帖:有的说没办法优化,有的说将IN该为EXISTS,有的说在ip上建立索引复合索引(ip,name)等...阅读全文
posted @ 2008-08-13 19:22 zping 阅读(13209) 评论(27) 编辑
摘要: 这是SQL Server 2005里的介绍:如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。但是,如果这两个输入的大小相差很大,则哈希联接操作通常快得多。 哈希联接可以有效处理未排序的大型非索引输入。它们对复杂查询的中间结果很有用,因为: ·中间结果未经索引(除非已经显式保存到磁盘上然后创建索引),而且通常不为查询计划中的下一个操作进行适...阅读全文
posted @ 2008-08-11 21:38 zping 阅读(2955) 评论(5) 编辑
摘要: 简介:如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。从上次我们分析来看,嵌套循环适合输入和输出都小的情况,那如果输入和输入都比较大情况下,使用合并算法什么情况下最优。最佳使用:合并联接本身的速度很快,但如果需要排序操作,选择合并...阅读全文
posted @ 2008-08-10 17:27 zping 阅读(1766) 评论(0) 编辑
摘要: 前段时间看了一篇关于算法的blog,地址如下: http://www.cnblogs.com/perfectdesign/archive/2008/04/24/sql_tuning.html 不少人也给了解决方法,以前也研究过(嵌套,合并,hash)算法,但没有真正的用到优化中,这个例子给了我很大启示。 现在就讨论一下这三个算法的使用。 嵌套循环:算法:for each row R1 in the...阅读全文
posted @ 2008-08-10 17:20 zping 阅读(6157) 评论(6) 编辑
摘要: 在使用Exists时,如果能正确使用,有时会提高查询速度: 1,使用Exists代替inner join 2,使用Exists代替 in 1,使用Exists代替inner join例子: 在一般写sql语句时通常会遇到如下语句: 两个表连接时,取一个表的数据,一般的写法通过关联查询(inner join): [代码]查询结果:[代码] 还有一种写法使用exists来取数据[代码]执行结果: [代...阅读全文
posted @ 2008-08-05 20:52 zping 阅读(28551) 评论(36) 编辑
摘要: 最近学习Oracle中,在其有hash表分区功能,就在想sql server 有类似分区吗,查了一些资料,发现没有介绍,在2005中目前只支持列表和范围分区。 以前只知道Sql Server有hash索引,本文就在Sql Server中实现Oracle里的hash表分区。在oracle 10g的hash分区保持分区数据的均匀,分的区个数是2的倍数分区才可以实现。前段时间做了一个试验,实现了在sql...阅读全文
posted @ 2008-07-27 20:28 zping 阅读(3177) 评论(4) 编辑
摘要: 一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 阅读全文
posted @ 2019-05-24 11:00 zping 阅读(6) 评论(0) 编辑
摘要: 前不久去面试,被问到Innodb引擎的表如何改数据库名,当时我也只回答了MyISAM改如何操作,被一些细节问题打败,真是操蛋。 如果表示MyISAM那么可以直接去到数据库目录mv就可以。 Innodb完全不行,自己测试过,会提示相关表不存在。 第一种方法: RENAME database olddb阅读全文
posted @ 2019-05-23 18:30 zping 阅读(3) 评论(0) 编辑
摘要: 在编译安装新的python3.7的时候报错 ModuleNotFoundError: No module named '_ctypes',其实是缺少了一个新需要的开发包libffi-devel,安装后即可 yum install libffi-devel -y (包在base) 最终显示Instal阅读全文
posted @ 2019-05-23 16:35 zping 阅读(5) 评论(0) 编辑
摘要: 3、pip安装 3.1 首先安装setuptools软件包: (1)下载setuptools包 wget https://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz (2)解压setuptools包 tar z阅读全文
posted @ 2019-05-22 18:46 zping 阅读(14) 评论(0) 编辑
摘要: 处理方法如下: 一:跳过错误 这个GTID_NEXT的4,是在master 上正常执行的最大id + 1,即Executed_Gtid_Set里面master uuid执行过的最大值 3+ 1 二,重置master跳过错误 手工调整SLAVE已清除的GTID列表GTID_PURGED,人为通知SLA阅读全文
posted @ 2019-05-22 16:12 zping 阅读(6) 评论(0) 编辑
摘要: [MySQL]prompt = [\\u@\\h][\\d]>\\_ #自定义登录提示信息[mysqld]#基本设置#user = mysql #用户名sql_mode =“STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO阅读全文
posted @ 2019-05-22 10:32 zping 阅读(4) 评论(0) 编辑
摘要: 今天在公司的工程环境中做了个案例,手动切换关闭主库的mysql服务,从库上升为主库之后,发现主库处于read_only状态,通过高可用的组件观察了剩余主从库的alive以及delay的状态发现均正常。由于处于公司的内网环境中,所以就没有保存图片,就通过文字的方式记录下今天这个案例。环境:mysql5阅读全文
posted @ 2019-05-22 10:22 zping 阅读(4) 评论(0) 编辑
摘要: mysql对cpu的利用特点:5.1之前,多核支持较弱;5.1可利用4个核;5.5可利用24核;5.6可利用64个核;每个连接对应一个线程,每个并发query只能使用一个核mysql对内存的利用特点:有全局内存和会话内存,建议将会话内存设置较小;内存管理简单、有效(如在高并发环境下,可以增加物理内存阅读全文
posted @ 2019-05-22 09:56 zping 阅读(4) 评论(0) 编辑
摘要: 1. Innodb存储引擎 2. Innodb文件 3. Innodb表 4. Innodb事务 5. innodb索引与算法 6. Innodb锁1. Innodb存储引擎2. Innodb文件 3. Innodb表 4. Innodb事务 5. innodb索引与算法 6. Innodb锁 作者阅读全文
posted @ 2019-05-21 16:56 zping 阅读(8) 评论(0) 编辑
摘要: 一台Centos 7.2虚拟机 操作步骤: 方法一: 1. 更改网卡配置文件的名字 ~]# cd /etc/sysconfig/network-scripts/ network-scripts]# mv ifcfg-eno33559296 ifcfg-eth0 2. 编辑网卡ifcfg-eth0信息阅读全文
posted @ 2019-05-21 16:17 zping 阅读(6) 评论(0) 编辑
摘要: 前言 ​ 关于数据库我们知道是通过内存对磁盘进行操作的,也知道数据会落实到磁盘上,但是数据在磁盘上的存储结构可能大家还不是很清楚。 ​ MySQL服务器上负责对表中的数据的读取和写入的工作的部分是存储引擎,而关于服务器会支持不同类型的服务器,如:InnoDB、MyISAM、Memory...... 阅读全文
posted @ 2019-05-21 11:09 zping 阅读(3) 评论(0) 编辑
摘要: delimiter $create event my_long_running_trx_monitoron schedule every 1 minutestarts '2015-09-15 11:00:00'on completion preserve enable dobegin declare阅读全文
posted @ 2019-05-20 18:17 zping 阅读(5) 评论(0) 编辑
摘要: 最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库。今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例。因为规范大部分还是具有通用性,所以也借鉴了像去哪儿和赶集的规范,但实际在撰写本文的过程中,每一条规范的背后无不是在工作阅读全文
posted @ 2019-05-20 17:14 zping 阅读(8) 评论(0) 编辑
摘要: 作者简介:许子文 曾任达梦高级数据库工程师,现任去哪儿网高级DBA,负责MySQL 、Hbase运维和自动化运维工具的开发。在RDBMS拥有多年数据库架构设计、性能优化和运维经验,对海量数据有丰富的运维经验和个人见解。 备份恢复是DBA日常运维工作中的重中之重􏰀怎么快速高效完成备份和恢复􏰀怎么有阅读全文
posted @ 2019-05-20 16:50 zping 阅读(4) 评论(0) 编辑
摘要: 当然, 从总的结果来看, 似乎两者都表现为两次读取的结果不一致. 但如果你从控制的角度来看, 两者的区别就比较大 对于前者, 只需要锁住满足条件的记录 对于后者, 要锁住满足条件及其相近的记录 我这么理解是否可以? 避免不可重复读需要锁行就行 避免幻影读则需要锁表 ####不可重复读和幻读的区别##阅读全文
posted @ 2019-05-17 18:21 zping 阅读(4) 评论(0) 编辑