关于SQL中select性能优化有以下建议,仅当笔记记录. 1.检查索引:where.join部分字段都该加上索引 2.限制工作数据集的大小:利用where字句过滤 3.只选择需要的字段:减少IO开销 4.移除不必要的表 5.移除外部连接查询 outer joins .更新null值占位符 6.删除join和where字句中的计算字段:在原表新增一列,如果有权限的话.例如: SELECT * FROM sales a ) + MONTH(a.sale_date)) = b.budget_year…
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的一张MySQL基础架构图: MySQL中一条查询语句的生命周期大概可以分为 客户端通过连接器连接服务器 在解析器中解析SQL语句 优化器进行优化 执行器执行生成的执行计划 返回结果给客户端 一般而言,执行器执行阶段是最为重要的阶段,也就是说,最耗费性能的阶段.所以我们的优化,其实就是在优化执行器的执…
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global 参数名=参数值; set @@global.参数名 :=参数值; 会话参数 set [session] 参数名=参数值; set @@session.参数名 :=参数值; 内存配置相关参数 确定可以使用的内存的上限 确定mysql每个连接使用的内存 sort_buffer_size:需要注意,每个…
优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引, 则该索引将被列出, 但不一定被查询实际使用) : 如果这个值没有达到预期的效果(比如说本来预料到可能使用某个索引但是这里没显示),就去查看sql语句哪里出问题了, 如果这里显示了预料的可能使用的索引,之后再去查看key :这一列,看看是否用到了索引 如果没有索引,再去查看sql语句where条件哪里出…
上一篇博客讲了可以使用慢查询日志定位耗时sql,使用explain命令查看mysql的执行计划,以及使用profiling工具查看语句执行真正耗时的地方,当定位了耗时之后怎样优化呢?这篇博客会介绍mysql中最简单快速的优化方法——添加索引. 一.索引的添加                                                                              mysql一共有四类索引,分别是主键索引.唯一索引.普通索引以及全文索引. 1.1.主…
一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin extended-status命令来查看QPS值,如下所示. mysql> show global status like 'Questions';--QPS=Questions/Uptime(show status like 'Uptime')这是一个全局的平均值 +---------------…
SQL优化 1.查看各种SQL执行的频率 mysql> show status like 'Com_select';--Com_insert,Com_delete,connections(试图连接mysql服务的次数),uptime(mysql工作时间),slow_queries(慢查询次数)等等 2.定位执行效率较低的SQL语句 通过慢查询日志,定位查询效率低下的SQL语句,然后分析语句进行优化 3.通过explain或desc分析SQL语句的执行计划,如要查看所访问的分区使用explain…
数据库性能瓶颈的原因 数据库连接数 数据量大 硬件资源限制 数据性能优化方案 sql优化       2.缓存        3.建好索引    4.读写分离        5. 分库分表 慢日志查       show cache          索引      mysql主从           mycat Mysql查询优化---执行步骤 mysql客户端/服务端通信 查询缓存 查询优化处理 查询执行引擎 返回客户端 Mysql是半双工通信:只能一方传一方,另一方等待信息 最简单的优化…
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默认值. 3.应尽量避免在where子句中使用!=或<>操作符,MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE. 4.应尽量避免在where子句中使用or…
使用ab进行压力测试 ab -n行数 -c并发数 url 重点关注下面两点: 1.Request per secend : 每秒可接收的请求数 2.Time per request : 每次请求所耗费的时间 优化1.多使用PHP自身的功能(如PHP定义的函数.常量),尽量少自己造轮子,自己写的代码冗余较多,可读性不高,且性能低下 PHP每次接受请求后,都会进行编译成底层语言,C->汇编->机器语言,同时接受大量请求,每个请求都会执行一次编译 示例代码如下: bad.php          …