HugePage是否是拯救性能的万能良药?
一、准备知识 在阅读本文之前,需要读者至少了解以下基础知识 CPU Cache的基本概念,具体可参见 关于CPU Cache – 程序猿需要知道的那些事。 NUMA的基本概念,具体可参见 NUMA架构的CPU — 你真的用好了么?。 目前Linux基于多核CPU繁忙程度的线程调度机制,参看Chip Multi Processing aware ……
MySQL SQL报错解决:You can’t specify target table ‘work’ for update in FROM clause
下面来对GROUP BY后面有多个字段进行测试。 一、环境搭建 CREATE TABLE `work` ( `id` int DEFAULT 0, `name` varchar(20) DEFAULT NULL, `address` varchar(20) DEFAULT NULL, `work` var……
MySQL SHOW PROCESSLIST协助故障诊断
一、SHOW PROCESSLIST命令 SHOW PROCESSLIST显示正在运行(用户运行线程)的线程(或SHOW FULL PROCESSLIST显示更多信息)。您还可以从INFORMATION_SCHEMA PROCESSLIST表或mysqladmin processlist命令获取此信息。如果你有这个PROCESS特权,你可以看到所有的线程。否……
MySQL InnoDB表空间传输的用途
在 MySQL 中如果要迁移一个表导另外一个服务器/环境中,常规的做法就是使用备份工具备份,比如 mysqldump/mysqlpump/mydumper,然后拷贝备份到目标服务器或者环境导入。如果某一个表数据量很大,导出 dump 文件很大的情况下,使用导出导入工具其实会花费不少的时间。 怎么样提高效率呢,可以有一种想法就是直接拷贝数据文件到目标环境,当然……
MySQL内存使用分析(OOM分析)
一、MySQL如何使用内存? 首先,介绍MySQL使用内存的一些方法: 会话级别的内存消耗(连接私有内存):如 sort_buffer_size 等,每个会话都会开辟一个 sort_buffer_size 来进行排序操作。 全局的内存消耗(共享内存):例如 innodb_buffer_pool_size 等,全局共享的内存段。 MySQL内存计算器 全……
通过学习Linux内存分配策略,搞明白进程OOM机制
第一章:学习Linux内存分配策略 今天想提到的是线上一个4G的RDS实例,发生了OOM(out of memory)的问题,MySQL进程被直接Kill掉了。在解释这个问题的时候,我们首先需要从Linux系统内存分配策略讲起。 一般写C语言程序,我们习惯使用malloc动态的申请内存空间(Java由JVM负责内存管理),malloc函数会向操作系统申请一段……
找出MySQL服务器发生SWAP的原因?
首先,讲一下MySQL的内存消耗分为: 会话级别的内存消耗:如 sort_buffer_size 等,每个会话都会开辟一个 sort_buffer_size 来进行排序操作。 全局的内存消耗:例如 innodb_buffer_pool_size 等,全局共享的内存段。 关于会话级的内存消耗解释如下: read_buffer_size,sort_buffe……
MySQL为什么要关闭Query Cache?
当你的数据库打开了Query Cache(简称QC)功能后,数据库在执行SELECT语句时,会将其结果放到QC中,当下一次处理同样的SELECT请求时,数据库就会从QC取得结果,而不需要去数据表中查询。 在这个”Cache为王”的时代,我们总是通过不同的方式去缓存我们的结果从而提高响应效率,但一个缓存机制是否有效,效果如何,却是一……
MongoDB&MySQL关于NUMA架构CPU的相关问题
一、背景 MongoDB日志报警显示如下: WARNING: You are running on a NUMA machine. We suggest launching mongod like this to avoid performance problems: numactl --……
MySQL表字段字符集不同导致的索引失效问题
1. 概述 昨天在一位同学的MySQL机器上面发现了这样一个问题,MySQL两张表做left join时,执行计划里面显示有一张表使用了全表扫描,扫描全表近100万行记录,大并发的这样的SQL过来数据库变得几乎不可用了,今天和大家一起分享下这个问题的原因及解决办法,希望可以帮助大家更好的学习MySQL数据库,一起来看看吧。MySQL版本为官方5.7.12。 ……
MySQL线上CPU负载过高的解决过程
接到报警通知,负载过高,达到800%,load也过高,有11了。 MySQL版本为5.6.12-log 1)top 之后,确实是mysqld进程占据了所有资源。 2)查看error日志,无任何异常。 3)show eninge innodb status\G,没有死锁信息。 4)show full processlist; 没有耗时非常大的慢sql再跑。看并……
MySQL中sleep连接过多的问题解决
在MySQL中运行SHOW PROCESSLIST;,现数据库中有很多这样的进程: 上图可以看出,bim用户发起了274个连接,都是sleep状态。MySQL中Sleep连接过多,那么造成sleep的原因,有三个,下面是mysql手册给出的解释: 1)客户端程序在退出之前没有调用mysql_close()。[写程序的疏忽,或者数据库的db类库没有自动关闭每……