性能优化
文章平均质量分 79
大鹏的世界
天道酬勤!分布式+大数据架构解决方案
展开
-
mysql大规模数据检索优化
业务中遇到如下场景:每天有400W条左右的数据需要存储,随后使用的时候需要根据一批字段进行检索,且支持分类,其中包含普通字段的检索、模糊匹配、按时间范围检索, 需要支持三个月内的数据检索。1.存储和检索方案mysql单表数据量在过千万之后,读写性能会下降的比较厉害,而该业务场景下,每天产生的时候都有400W条左右,算下来一个月得有1.2亿条数据,三个月就是3.6亿条。我要说话说起来,这个量级的数据的检索,用mysql来做,本身是一件不科学的事情,应该采用Elasticsearch等比较专业的检原创 2020-11-20 10:12:41 · 791 阅读 · 0 评论 -
MySQL优化:如何避免回表查询?什么是索引覆盖
数据库表结构:createtableuser(idintprimarykey,namevarchar(20),sexvarchar(5),index(name))engine=innodb;selectid,namewherename='shenjian'selectid,name,sexwherename='shenjian'多查询了一个属性,为何检索过程完全不同? 什么是回表查询? 什么是...原创 2020-11-18 15:50:23 · 451 阅读 · 0 评论 -
Mysql Too many connections 和 数据库堵塞问题排查处理
一、问题描述 今天突然接到个问题,Mysql内存占用90%多,后来发现有问题就查找到Max_used_connections到达顶峰二、处理方法1.查询连接情况,【定位堵塞的线程执行的SQL的time字段,time列:此这个状态持续的时间,单位是秒。】如果有SUPER权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)参数文献参考:mysql show processlist命令 详解root@localh...原创 2020-11-04 18:10:26 · 634 阅读 · 0 评论 -
MySQL慢查询分析工具pt-query-digest详解
一、简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。二、安装pt-query-digest1.下载页面:https://www.perco转载 2020-10-28 08:57:17 · 3147 阅读 · 0 评论 -
PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数
阅读目录一、CSV数据导入函数fgetcsv() 二、CSV数据导出函数fputcsv()CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。回到顶部一、CSV数据导入函数fgetcsv()fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。与fgets()类似,不同的是 fgetcsv() 解析读入的行并找出 CSV 格式的字段,然后返回一个包含这些字段的数组。fgetcsv() 出错时返回 FALSE,包括碰到文..转载 2020-10-13 17:43:36 · 959 阅读 · 0 评论 -
nginx和php-fpm连接超时之解决方法
言现在线上系统的架构大致是这样的,除去cache的proxy机器外,还有项目的nginx proxy机器,后面跟nginx webserver + php-fpm。有时候,会看到proxy nginx的日志里面会有各种异常状态码,比如499,502,504等,这些都是什么情况导致的呢? 架构示意 nginxproxy=>nginxwebserver=>php-fpm 状态码说明 499:客户端(或者proxy)主动断开连jie502:网关错误(BadGa...转载 2020-09-27 16:14:23 · 2266 阅读 · 0 评论 -
PHP7开启opcache打造强悍性能
鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache:记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快,所以之前测试时期就发生了有人一直没有启用Opcache的事情那么什么是Opcache呢?Opcache 的前生是Optimizer+,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件Opcode...转载 2020-09-14 15:17:36 · 517 阅读 · 0 评论 -
PHP-php-fpm配置优化
前言: 1.少安装PHP模块, 费内存 2.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)(我是修改/etc/rc.local,加入ulimit -SHn 51200的)echo `ulimit -HSn 65536` >> /etc/profileecho `ulimit -HSn 65536` >> /etc/rc.localsource /etc/profile 如果`ulimit -n`数量依旧不多(即上面配置没生效)的话转载 2020-09-14 16:45:07 · 3035 阅读 · 0 评论 -
监控性能方面命令大总结
一、last 命令last 显示系统开机以来获是从每月初登入者的讯息 -R 省略 hostname 的栏位 -num 展示前 num 个 如:last -3 展示前三行 username 展示 username 的登入讯息 tty 限制登入讯息包含终端机代号范例:[root@elain ~]# last -R -2root转载 2012-04-09 11:43:20 · 1350 阅读 · 0 评论 -
在生产环境中使用 php 性能测试工具 xhprof
xhprof 是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。而xhprof就显得很轻量转载 2012-04-09 15:11:32 · 1551 阅读 · 0 评论 -
MySQL Replication 优化和技巧、常见故障解决方法
MySQL 主从同步错误(error)解决(转)sql_slave_skip_counter参数附:一些错误信息的处理,主从服务器上的命令,及状态信息。在从服务器上使用show slave status\GSlave_IO_Running,为No,则说明IO_THREAD没有启动,请执行start slave io_threadSlave_SQL转载 2012-05-21 14:27:51 · 16837 阅读 · 0 评论 -
MySQL Order By实现原理分析和Filesort优化
MySQL中的ORDER BY有两种排序实现方式:1.利用有序索引获取有序数据 取出满足过滤条件作为排序条件的字段,以及可以直接定位到行数据的行指针信息,在 Sort Buffer 中进行实际的排序操作,然后利用排好序的数据根据行指针信息返回表中取得客户端请求的其他字段的数据,再返回给客户端.1.1 按照索引对结果进行排序:order by 使用索引是有条件1转载 2012-03-19 16:20:51 · 1503 阅读 · 0 评论 -
using_where, Using temporary ,using_filesort 分享
Using filsort文档中的解释:Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键字被排序,并按排序顺序检索行。额外的传递是指什么?Mysql> show create table test_filesort\G;***************************原创 2012-03-19 09:39:07 · 10414 阅读 · 0 评论 -
Mysql优化的基本思路和原则
在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本思路和原则。一 般来说,Query 语句的优化思路和原则主要提现在以下几个方面: 1. 优化更需要优化的Query; 2. 定位优化对象的性能瓶颈; 3. 明确的优化目标; 4. 从Explain 入手; 5. 多使用profile 6.转载 2012-03-19 16:09:31 · 1236 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第转载 2012-04-06 20:39:38 · 672 阅读 · 0 评论 -
MySQL语句优化的原则 使你的-- SQL 语句完全优化--Oracle
MySQL语句优化的原则1、使用索引来更快地遍历表。 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。 合理的索引设计要建立在对各种查询的分析和预测上。一般来说: a.有大量重复值、且经常有范围查询( > , =, b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引; c.组合索引要尽原创 2011-08-11 14:30:35 · 1733 阅读 · 0 评论 -
mysql explain 详解
参考:EXPLAIN sql优化方法(1) 添加索引EXPLAIN sql优化方法(2) Using temporary ; Using filesortEXPLAIN sql优化方法(3)DERIVED在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行原创 2011-05-03 23:41:00 · 2332 阅读 · 0 评论 -
详解MySQL分组查询Group By实现原理(1)
由于 GROUP BY 实际上也同样会进行排序操作,而且与 ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引。 在 MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的转载 2012-03-19 17:57:04 · 2083 阅读 · 0 评论 -
MySQL数据库服务器逐渐变慢 该如何分析与解决 【待看】
第一步 检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。1.1 使用sar来检查操作系统是否存在IO问题 #sar -u 2 10 — 即每隔2秒检察一次,共执行转载 2012-03-19 14:38:57 · 987 阅读 · 0 评论 -
MySQL服务器安装完之后如何调节性能-尤其是INNODB
网上案例分析:解决mysql卡死的问题 彻底优化mysql_Io_oI 尽管你可以调节很多MySQL服务器上的变量,但是在大多数通常的工作负载下,只有少数几个才真正重要。如果你把这些变量设置正确了,那么修改其他变量最多只能对系统性能改善有一定提升。key_buffer_size - 这对MyISAM表来说非常重要。如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%。转载 2011-11-08 22:53:53 · 1011 阅读 · 0 评论 -
贪占了我的系统资源 php-fpm
测试人员向我们反映:在Facebook平台的游戏比其它平台的游戏明显更慢。我询问,是不是因为翻墙网络原因。他们说:不是,其它游戏也比较流畅。使用httpwatch查看了http请求,发现api.php请求花了6秒,且大部分时间是红色(httpwatch红色表示服务器运算时间)。平常2秒,现在6秒,服务器处理时间在不同的服务器相差这么多。直觉告诉:服务器资源。服务器概况操作系统:Cent转载 2012-03-16 14:58:12 · 1244 阅读 · 0 评论 -
MYSQL 常识系统回顾和整理【建表、索引、数据同步、高效查询、排错原则】
参考:使你的 SQL 语句完全优化--Oraclemysql 执行顺序 SQL语句执行顺序分析首先,SELECT语句的基本语法如下: SELECT selection_list # What columns toselect FROM table_list # Which tables to select rowsfrom WHERE prima转载 2012-03-18 11:26:30 · 1398 阅读 · 0 评论 -
fastcgi 优化
1.3 更好的方法 - FastCGI如果你正饱受 CGI 效率不佳之苦,又不想受限于 NSAPI 及 ISAPI ,也没有大笔银子去买昂贵的 Application Server,我建议你试试看 FastCGI。不同于 NSAPI 及 ISAPI 以及其它的网页服务器语言 (如 ASP, PHP3, mod_perl),FastCGI 比较类似 CGI,它只是一个网站应用程序设计的规转载 2012-02-12 13:05:04 · 1466 阅读 · 0 评论 -
MySQL主从服务器的一些技巧
问题:主从服务器表类型的选择一般的共识是主服务器使用innodb,事务,行锁等功能是myisam所没有的,对修改操作而言,它更高效;从服务器使用myisam,全文检索功能是innodb所没有的,对查询操作而言,它更高效。这样就可以各尽其能。问题:主从服务器字段类型的选择字段类型对于分页等操作有很大影响。主服务器一般是innodb,因为不涉及查询,所以可以使用varchar等转载 2012-05-14 17:45:56 · 604 阅读 · 0 评论 -
inotify监控linux系统下的目录变化
最近,有个项目需要及时删除Nginx服务生成的缓存文件,由于不是很了解Nginx缓存生成的策略,在网上也没有仔细找,经过大家讨论,最终希望引入liunx的inotify功能,监控某个liunx目录下的各种事件(create,delete,access等等). 想了解inotify的朋友,请参考以下两篇博文: 1.http://www.ibm.com/developerworks/cn/li转载 2012-06-06 08:23:46 · 1518 阅读 · 0 评论 -
关于PHP程序员解决问题的能力
这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高。解决问题的能力既能看出程序员的思维能力,应变能力,探索能力等,又可以看出他的经验。如果解决问题能力不佳是无法通过面试的。这里举个例子,假如我执行了一个PHP的脚本,如php test.php,预期是可以返回一个字符串。但执行后没有任何信息输出,这时候通过什么方法能知道程序错在哪里?这里可以将解决问转载 2015-07-14 17:31:04 · 699 阅读 · 0 评论 -
秒杀的性能问题和超卖
一、秒杀带来了什么?秒杀或抢购活动一般会经过【预约】【抢订单】【支付】这3个大环节,而其中【抢订单】这个环节是最考验业务提供方的抗压能力的。抢订单环节一般会带来2个问题:1、高并发比较火热的秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。2、超卖任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量转载 2014-11-25 10:49:28 · 856 阅读 · 0 评论 -
innodb使用大字段text,blob的一些优化建议
最近看到一些老应用,在表结构的设计上使用了text或者blob的字段;其中一个应用,对blob字段的依赖非常的严重,查询和更新的频率也是非常的高,单表的存储空间已经达到了近100G,这个时候,应用其实已经被数据库绑死了,任何应用或者查询逻辑的变更几乎成为不可能;为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎在底层对行的处理方式:知识点一:在5.1中,innodb存储转载 2014-11-21 11:51:48 · 7791 阅读 · 1 评论 -
tps提升配置变更小笔记
1.应用本身,通过xhprof找出问题代码。产生系统内核调用函数尽量避免调用。比如is_file(), time(),require/include代替require_once/include_once等。2.尽量使用memcached缓存系统配置、模块数据、还有用户数据。减少mysqli_query()执行次数,它比较耗资源。开启mysqld的slow_query日志功能,优化那些较慢的sq转载 2014-07-08 23:36:07 · 2209 阅读 · 0 评论 -
系统吞吐量(TPS)、用户并发量、性能测试概念和公式
一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间 QPS(TPS):每秒钟request/事务 数量 并发数:转载 2014-07-08 23:58:54 · 34343 阅读 · 1 评论 -
MySQL中merge表存储引擎用法
在Mysql数据库中,Merge表有点类似于视图。mysql的merge引擎类型允许你把许多结构相同的表合并为一个表。之后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必须有完全相同表的定义和结构。Mysql Merge表的优点:A. 分离静态的和动态的数据B. 利用结构接近的的数据来优化查询C. 查询时可以访问更少的数据D. 更容易维护大数据集转载 2014-02-11 15:38:44 · 1725 阅读 · 0 评论 -
Mysql 性能优化教程
Mysql 性能优化教程目录目录................................................................................................................................. 1背景及目标..........................................转载 2011-08-13 18:55:29 · 2585 阅读 · 0 评论 -
mysql的binlog详解
什么是binlogbinlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。binlog作用因为有了数据更新的binlog,所以可以用于实时备份,与master/slave复制和binlog有关参数log_bin设置此参数表示启用binlog功能,并指定路径名称lo转载 2013-04-28 09:12:24 · 711 阅读 · 0 评论 -
关于MYSQL索引优化和in or替换为union all
mysql会对sql语句做优化, in 后面的条件不超过一定数量仍然会使用索引。mysql 会根据索引长度和in后面条件数量判断是否使用索引。另外,如果是in后面是子查询,则不会使用索引。一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有 20万条。article里面有一个"article_ca原创 2011-08-11 14:46:42 · 10839 阅读 · 1 评论 -
PHP Error 和 Logging 函数
PHP Error 和 Logging 简介error 和 logging 函数允许你对错误进行处理和记录。error 函数允许用户定义错误处理规则,并修改记录错误的方式。logging 函数允许用户对应用程序进行日志记录,并把日志消息发送到电子邮件、系统日志或其他的机器。安装error 和 logging 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。转载 2013-04-26 16:40:41 · 913 阅读 · 0 评论 -
Amoeba for MySQL学习研究之注意事项
Amoba配置方便,使用简单,性能表现也不错,但它也不是完美无缺的,在实际使用中有很多需要注意的事项。Amoeba不支持事务目前Amoeba不支持事务,任何有关事务的SQL语句都会被Amoeba屏蔽掉。如果必须使用事务,而且事务内的处理操作都可以路由到同一台MySQL上的话,可以考虑在存储过程中使用事务进行处理。另外,Amoeba将来有望支持事务。Amoeba不支持跨库join和排序转载 2013-05-13 10:45:19 · 957 阅读 · 0 评论 -
Mongodb在win7下的安装配置
客户端管理软件 MongoVUEPHP需要下载DLL库安装默认空密码又要学新东西了。mongodb仅仅知道他是数据库,具体吗有待以后学习。先说说怎么安装和配置吧。官网地址:http://www.mongodb.org/display/DOCS/Home里面的文档资料很多的,不懂得就看,我也是慢慢看的。下载下来后(本人用的是win7 32位)解压到一个转载 2013-04-26 14:39:08 · 960 阅读 · 0 评论 -
mysql互为主从复制配置笔记
MySQL-master1:192.168.72.128 MySQL-master2:192.168.72.129 OS版本:CentOS 5.4MySQL版本:5.5.9(主从复制的master和slave服务器中的mysql版本相同或者master版本高于slave版本) 一、MySQL master-master配置 1、修改MySQL配置文件 两转载 2012-05-24 10:10:40 · 1026 阅读 · 0 评论 -
MySQL集群的可行方案
如果单MySQL的优化始终还是顶不住压力时,这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了,目前可行的方案有:一、MySQL Cluster优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以这个我不推荐。二、DRBD磁盘网络镜像方转载 2012-05-21 13:48:56 · 2638 阅读 · 0 评论 -
Innodb锁机制
InnoDB锁问题InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。背景知识1.事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称转载 2013-04-27 10:23:14 · 1078 阅读 · 0 评论