分类目录:linux

以下是分类 linux 下的所有文章

MYSQL 实例CPU超过100%的分析

关于云数据库实例cpu 超过100%,通常这种情况都是由于sql 性能问题导致的,下面我用一则案例来分析: 用户实例xxx反馈cpu 超过100%,实例偶尔出现卡住的现象 1.原理:cpu 消耗过大通常情况下都是有慢sql 造成的,这里的慢sql 包括全表扫描,扫描数据量过大,内存排序,磁盘排序,锁争用等待等; 2.表现现象:sql 执行状态……

MySQL实际内存分配情况介绍

内存是重要的性能参数,常常出现由于异常的sql请求以及待优化的数据库导致内存利用率升高,更有甚者由于OOM导致实例发生HA切换。 MySQL的内存大体可以分为两部分:共享内存和session私有内存,下面详细介绍下各部分的构成。 1. 共享内存 以下为240M内存规格RDS实例的共享内存分配示意: mysql>show variables where va……

MySQL 慢日志 介绍

什么是慢日志? MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要我们手动来设置这个参数,当……

MySQL 开发实践

1.MySQL读写性能是多少,有哪些性能相关的重要参数? 这里做了几个简单压测实验 机器:8核CPU,8G内存 表结构(尽量模拟业务):12个字段(1个bigint(20)为自增primary key,5个int(11),5个varchar(512),1个timestamp),InnoDB存储引擎。 实验1(写):insert => 6000/s 前提:连接数100,每次insert单条记录 分析:CPU跑……

MySQL 长时间运行查询

1. 出现长时间执行的查询的原因 2. 长时间执行的查询带来的问题 3. 如何避免长时间执行的查询 4. 如何处理长时间执行的查询 4.1 DMS 处理会话 4.2 设置查询最长执行时间 4.3 创建事件自动清理长时间执行的查询 1. 出现长时间执行的查询的原因 在使用 MySQL 的过程中,由于某些原因,比如被 SQL 注入、SQL执行效率较差、D……

MySQL查询缓存 (Query Cache) 的设置和使用

1. 功能和适用范围 功能: 降低 CPU 使用率 降低 IOPS 使用率(某些情况下) 减少查询响应时间,提高系统的吞吐量 适用范围: 表数据修改不频繁、数据较静态 查询(Select)重复度高 查询结果集小于 1 MB 注: 查询缓存并不一定带来性能上的提升,在某些情况下(比如查询数量大,但重复的查询很少)开启查询缓存会带……

MySQL 表上 Metadata lock 的产生和处理

1. Metadata lock wait 出现的场景 2. Metadata lock wait 的含义 3. 导致 Metadata lock wait 等待的活动事务 4. 解决方案 5. 如何避免出现长时间 Metadata lock wait 导致表上相关查询阻塞,影响业务 1. Metadata lock wait 出现的场景 创建、删除索引 修改表结构 表维护操作(optimize table、repair table 等) 删……

MySQL InnoDB 锁等待和锁等待超时的处理

1. Innodb 引擎表行锁等待和等待超时发生的场景 2.Innodb 引擎行锁等待情况的处理 2.1 Innodb 行锁等待超时参数 innodb_lock_wait_timeout 2.2 大量行锁等待和行锁等待超时的处理a 1. Innodb 引擎表行锁等待和等待超时发生的场景 当一个 RDS MySQL 连接会话等待另外一个会话持有的互斥行锁时,会发生 Innodb 引擎表行锁……

MySQL InnoDB表级锁等待

1. 显式 lock table 2. 隐式 lock table 在 RDS MySQL 实例日常使用中,有些情况下会发现出现 Innodb 表级锁等待的情况,下面列出常见的2个原因。  1. 显式 lock table 执行了 lock tables tab_name read; 导致 DML 会话等待在表的表级锁上。 会话 1 lock tables tab_name read; 会话 2 会话 3   2. 隐式 lock t……

MySQL 查询分析

一个低效查询引发的思考 上次在做银行对账,上传对账单后,出现对账超时的情况。查看日志发现,最后一条日志记录停在了对 c2c_zwdb.t_file_count 的查询 sql 上。使用 show processlist 命令来查看当前 SQL 的执行情况,如下: 由上图可知,原来是发生锁表了 waiting for table level lock。 引发锁表的 sql 语句就是上……