一.优化概述二.查询与索引优化分析a.性能瓶颈定位show命令慢查询日志explain分析查询profiling分析查询b.索引及查询优化三.配置优化 max_connections back_log interactive_timeout key_buffer_size query_cache_size record_buffer_size read_rnd_buffer_size sort_buffer_size join_buffer_size table_cache max_heap_t…
本文由作者郑智辉授权网易云社区发布. 0.前言 本文通过分析线上MySQL慢查询日志,定位出现问题的SQL,进行业务场景分析,结合索引的相关使用进行数据库优化.在两次处理问题过程中,进行的思考. 1.简要描述 在九月底某个新上的游戏业务MySQL慢查询日志 # Time: 2017-09-30T14:56:13.974292+08:00 # Query_time: 6.048835  Lock_time: 0.000038 Rows_sent: 0  Rows_examined: 1288441…
一.理解MySQL的Query Optimizer MySQL Optimizer是一个专门负责优化SELECT 语句的优化器模块,它主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的Query 给出他认为最优的执行计划,也就是他认为最优的数据检索方式. 二.Query 语句优化基本思路和原则 在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本思路和原则.一般来说,Query 语句的优化思路和原则主要体现在以下几个方面: 重中之重,需熟背 1…
分三步: 记录慢查询的语句到日志文件 1.首先在SSMS,工具菜单下打开Profiler. 2.输入你用户名密码登陆. 3.常规,勾选保存到文件,选择一个文件路径,设置文件大小,这样可以分文件存储日志了 注意:在服务器本地,文件路径可以随便选择:跟踪远程服务器时这个路径设置需要使用\\ServerName\.......(应该是设置远程服务器能访问的本地一个共享路径,比较麻烦) 4.事件选择选择,选择以下两列即可, Stored Procedures RPC:CompletedTSQL     …
.long_query_time的默认值为10,意思是运行10S以上的语句. .临时设置开启慢查询日志 mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------…
MySQL性能优化 MySQL性能优化我们可以从以下四个维度考虑:硬件升级.系统配置.表结构设计.SQL语句和索引. 从成本上来说:硬件升级>系统配置>表结构设计>SQL语句及索引,然而效果却是由低到高.所以我们在优化的时候还是尽量从SQL语句和索引开始入手. 硬件升级 硬件升级这里不在过多赘述,升级更好配置的机器.机械硬盘更换为SSD等等. 系统配置优化 调整buffer_pool 通过调整buffer_pool使数据尽量从内存中读取,最大限度的降低磁盘操作,这样可以提升性能.查看bu…
虽然经过研究发现TCMalloc不适合我们现有的游戏框架,但意外收获发现TCMalloc可以大幅度提高MYSQL 性能及内存占用,这里给出配置及测试的结果: 1.配置 关于TCMalloc的安装,在<Google perftools 安装手记(TCMalloc)> 一文中已经详细给出,下面给出将TCMalloc配置到MYSQL的步骤: 1.1 修改MySQL启动脚本(依据MySQL安装位置): vi /usr/local/mysql/bin/mysqld_safe 在# executing m…
在项目开发中SQL是必不可少的,表索也一样.这些SQL的运行性能不知道吗?有多少是命中了索引的?命中哪个索引?索引中有哪个是无效索引?这些无效索引是否会影响系统的性能?带着这些问题我们一起来学习一下. MySql中是通过 Explain 命令来分析低效SQL的执行计划.命令的使用很简单. 示例 explain select * from adminlog 执行结果: id select_type table partitjons type possible_keys key key_len re…
原文地址:MySQL 性能优化技巧 博客地址:http://www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语句时索引失效,进行全表扫描.原本负责优化的同事有事请假回家,因此优化查询数据的问题落在笔者手中.笔者在查阅网上 SQL 优化的资料后成功解决了问题,在此从==全局角度==记录和总结 MySQL 查询优化相关…
服务器层面优化(了解) 将数据保存在内存中,保证从内存读取数据 设置足够大的innodb_buffer_pool_size,将数据读取到内存中. 建议innodb_buffer_pool_size设置为总内存大小的3/4或者4/5. 怎样确定innodb_buffer_pool_size足够大,数据是从内存读取而不是硬盘? show global status like 'innodb_buffer_pool_pages_%'; 降低磁盘写入次数 使用足够大的写入缓存innodb_log_fil…