MySQL优化和迁移
anzhen0429
这个作者很懒,什么都没留下…
展开
-
Oracle迁移到MySQL的各种坑及自救方案
从Oracle迁移到MySQL的各种坑及自救方案当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作。有些迁移很简单,有些迁移可能就会很复杂,大家有没有考虑过为了顺利完成复杂的数据库迁移任务,都需要考虑并解决哪些问题呢? 在以前的工作中,我迁移过Oracle到Informix、Oracle和SQLServer、Oracle到MySQL。 在转载 2017-07-31 22:54:08 · 498 阅读 · 0 评论 -
MySQL大表优化方案
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽转载 2017-09-02 18:05:06 · 326 阅读 · 0 评论 -
MySQL性能优化之参数配置
1、目的:通过根据服务器目前状况,修改MySQL的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能。 2、服务器参数:32G内存、4个CPU,每个CPU 8核。3、MySQL目前安装状况。 mysql目前安装,用的是MySQL默认的最大支持配置。拷贝的是my-huge.cnf.编码已修改为UTF-8.具体修改及安装MySQL,转载 2017-09-02 18:13:03 · 350 阅读 · 0 评论 -
mysql too many connections问题,kill掉所有锁表进程
说明:因为线上mysql实例太多,也就经常会遇到Too many connections的问题。出现这种问题的时候业务已经出现问题。此时最重要的还是先恢复业务。这里可以先获取show innodb status和show full processlist的信息以便等会分析原因。当然要先能连得进mysql。可以通过临时将连接数稍微调大,让自己能登陆上去,一般这种情况下登陆的时候也会出现Too m原创 2017-10-12 09:35:35 · 1537 阅读 · 0 评论 -
Mysql占用过高CPU时的优化手段
Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引;2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是G转载 2017-10-13 16:51:11 · 1935 阅读 · 0 评论 -
MySQL性能分析
第一步 检查系统的状态通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。1.1 使用sar来检查操作系统是否存在IO问题#sar -u 2 10 — 即每隔2秒转载 2017-10-13 17:07:56 · 313 阅读 · 0 评论 -
MySQL几点重要的性能指标计算和优化
1QPS计算(每秒查询数)针对MyISAM引擎为主的DBmysql> show GLOBAL status like 'questions';+---------------+------------+| Variable_name | Value |+---------------+------------+| Questions | 200919140原创 2017-10-26 15:54:39 · 2596 阅读 · 0 评论 -
MYSQL不同场景下MySQL的迁移方案
一 为什么要迁移MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。生产环境中,有以下情况需要做迁移工作,如下:1.磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘原创 2017-11-14 10:43:23 · 304 阅读 · 0 评论 -
MySQL 大表优化方案
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:转载 2017-11-14 10:49:35 · 271 阅读 · 0 评论 -
mysql的监控与调优
目前国内也有了一些讲MySQL比较好的数据,我推荐几本大家可以看,一本是《MySQL性能调优与架构设计》,一本是《深入浅出MySQL--数据库开发、优化与管理维护》这两本是笔者确实读过的,也是国内两只比较有实力的DBA团队的经验之谈。书大家可以买回去慢慢读,作为一篇文章篇幅有限,我只用片言片语引导性的介绍一些MySQL监控和优化方面的知识,这就算是一种普及式的讲解,深入转载 2017-12-05 11:05:46 · 399 阅读 · 0 评论 -
MySQL 数据库下DELETE、UPDATE 子查询的锁机制解析与优化
在日常的工作之中,数据库开发与维护人员避免不了与 in/exists、not in/not exists 子查询打交道,接触过的人可能知道 in/exists、not in/not exists 相关子查询会使 SELECT 查询变慢,没有 join 连接效率,却不知道 DELETE、UPDATE 下的子查询却可能导致更严重的锁问题,直接导致 MySQL InnoDB 行锁机制失效,锁升级,严...转载 2018-07-06 17:56:22 · 3663 阅读 · 0 评论 -
提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意) 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,...转载 2018-07-06 18:32:17 · 296 阅读 · 0 评论 -
mysql状态查看 QPS/TPS/缓存命中率查看
运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态。 (1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Question%'; (2)TPS(每秒事务量) TPS = (Com_commit + Com_roll...转载 2018-07-07 15:29:37 · 371 阅读 · 0 评论 -
MySQL 优化实施方案
1.1 前言 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。更多关于MySQL查询相关参照:http://www.cnblogs.com/clsn/p/8038964.html#_label6 系列文章。 图 - MySQL查询过程1.2 优化的哲学优化有风险,...转载 2019-02-21 17:24:50 · 174 阅读 · 0 评论 -
高性能Mysql 入门到放弃 之 B+-Tree (与B-Tree以及Binary Tree的对比解析)
问题由来:索引:大家平常说的还有用的索引,如果没特别标明或者声明都是B-Tree索引,大多数Mysql引擎都支持这种索引,而Msyql常用引擎InnoDB等常为B+-Tree。开始解决问题:预备知识磁盘IO· 系统读取磁盘是将磁盘的基本单位---磁盘块(Block)读取出来。位一同一磁盘块的数据会被一次性读取出来。磁盘读取IO是机械动作,时间大概为内存读取的十万多倍。所以磁盘I...转载 2019-02-19 10:08:35 · 243 阅读 · 0 评论 -
MySQL性能剖析工具(pt-query-digest)
MySQL性能剖析工具(pt-query-digest)【转】这个工具同样来自percona-toolkit该工具集合的其他工具MySQL Slave异常关机的处理 (pt-slave-restart)验证MySQL主从一致性(pt-table-checksum&pt-table-sync)http://www.linuxidc.com/Linux/2014-07/1...转载 2019-03-22 15:58:18 · 511 阅读 · 0 评论 -
MySQL性能优化方案总结
可以从以下几个方面对MySQL进行优化, 效果: SQL和索引 > 数据库表结构 > 系统配置 > 硬件 但成本从低到高。1.SQL和索引优化1.1SQL1.1.1优化SQL语句的一般步骤:①通过show status 命令了解各种SQL的执行效率,show [session | global] status;11可以根据需要加上参数来显示ses转载 2017-09-02 17:58:59 · 343 阅读 · 0 评论 -
mysql性能优化-慢查询分析、优化索引和配置
一、 优化概述MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。除了服务器硬件的性能瓶颈,对于MyS转载 2017-09-02 17:53:53 · 332 阅读 · 0 评论 -
MySQL 数据库设计总结
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比转载 2017-09-02 17:47:59 · 447 阅读 · 0 评论 -
mysql删除大表更快的drop table办法
利用硬链接和truncate降低drop table对线上环境的影响在DROP TABLE的时候,所有进程不管是DDL还是DML都被HANG起;直到DROP结束才继续执行;这是因为INNODB会维护一个全局独占锁(在table cache上面),直到DROP TABLE完成才释放。在我们常用的ext3,ext4,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还转载 2017-07-28 22:59:24 · 24503 阅读 · 1 评论 -
MYSQL优化概述
数据库性能取决于数据库级的几个因素,如表,查询和配置设置。这些软件结构导致CPU和I / O操作在硬件级别,您必须最小化并尽可能高效。在处理数据库性能时,首先要了解软件方面的高级规则和准则,并使用挂钟时间来衡量性能。当您成为专家时,您将进一步了解内部发生的事情,并开始测量CPU周期和I / O操作。典型的用户希望通过现有的软件和硬件配置获得最佳的数据库性能。高级用户寻找改善MySQL软件本身的原创 2017-07-22 14:00:38 · 235 阅读 · 0 评论 -
MySQL大表优化方案(最全面)
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用T转载 2017-07-06 21:05:48 · 841 阅读 · 0 评论 -
MySQL优化之SQL优化(一)
最近在线上发现很多性能有问题的sql,开发写sql语句的时候,没充分考虑是否用上索引了,所以这个坑得DBA来填,好了,废话不多说,把一些线上的优化经验跟大家分享。由于是线上的表,所以就不公开具体的表结构了,请大家体谅,我会模拟一个类似的表来说明当时的性能问题:当时的表结构类似此表:mysql> show create table test\G *********转载 2017-08-12 12:48:06 · 259 阅读 · 0 评论 -
MySQL优化Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略转载 2017-08-12 12:49:55 · 262 阅读 · 0 评论 -
MySQL使用MERGE进行分表实现
使用MERGE进行分表:发现一个MERGE表一直出现Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist报错,但是在5.0上一直是OK的,于是进行了一些实践后发现是由于MERGE的表索引和其他子表不一致导致。添加索引之后正常了。而为什么5.0是正原创 2017-08-05 08:50:38 · 5130 阅读 · 0 评论 -
MYSQL之pt-query-digest查询日志分析工具
1. 工具简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分转载 2017-09-03 23:35:52 · 628 阅读 · 0 评论 -
MYSQL之pt-query-digest分析mysql负载性能问题
案例背景: 线上某台mysql生产库服务器,CPU负载告警,使用率持续接近100%,丝毫没有回落的意思!1. 性能表象的数据采集 登陆DB服务器 : 、mysql进程的CPU占用率765.9%(8核),CPU基本上消耗殆尽! 2. 问题全面诊断: 结论: 内存,转载 2017-09-03 23:49:16 · 523 阅读 · 0 评论 -
MySQL优化之并行复制优化(二)
先重复下MySQL复制原理,其通过三个线程来完成,在master节点上运行的binlogdump线程以及在slave节点上运行的I/O线程和SQL线程。具体如下:1. master节点上的binlogdump线程,在slave与其正常连接的情况下,将binlog发送到slave上。2.slave节点上的I/O线程,通过读取master节点发送的内容,并将数据复制到本地的relayl原创 2017-08-28 21:37:47 · 533 阅读 · 0 评论 -
MySQL之innodb_flush_log_at_trx_commit和sync_binlog参数详解
innodb_flush_log_at_trx_commit和sync_binlog是MySQL innodb引擎的两个重要的参数,其中innodb_flush_log_at_trx_commit是将事务日志从innodb log buffer写入到redo log中,sync_binlog是将二进制日志文件刷新到磁盘上。innodb事务日志redo,binlog逻辑过程如下:1.事务转载 2017-08-28 22:06:30 · 700 阅读 · 0 评论 -
mysql千万级数据库插入速度和读取速度的调整记录
一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧。(1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data File和减少数据库的checkpoint 操作。这次修改了下面四个配置项: 1)将 innodb_flush_log_at_trx_commit 配置设定为0;按过往转载 2017-09-16 23:35:37 · 3422 阅读 · 0 评论 -
Mysql占用过高CPU时的优化手段
Mysql占用过高CPU时的优化手段Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引;2)打开慢查询日志,将那些执行时间过长且占用资源过多的S转载 2017-09-17 12:03:13 · 698 阅读 · 0 评论 -
MySQL优化---DBA对MySQL优化的一些总结
MySQL优化---DBA对MySQL优化的一些总结本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。1、硬件层相关优化转载 2017-09-17 12:18:59 · 1025 阅读 · 0 评论 -
MYSQL一个数据库服务器高iowait的优化案例
一个数据库服务器高iowait的优化案例1.开发反馈某一测试环境sql运行缓慢,而在其他测试环境该sql运行很快。两个环境其配置相同,均只部署了mysql服务器。2.执行top命令发现sql运行缓慢的机器上磁盘iowait较sql运行较快的机器高出很多。推测这是导致sql运行缓慢的主因,因为该sql是要读取表,表较大,且要扫描的行数较多。3.到底是什么导致机器iowait高原创 2017-09-18 21:11:50 · 991 阅读 · 0 评论 -
MySQL性能优化的最佳20+条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1.转载 2017-09-02 17:17:46 · 604 阅读 · 0 评论 -
MySQL反应慢的排查思路
一、导致MySQL慢可能的因素有1、计算资源不足2、系统层面未进行基本的优化,或不同进程间资源抢占3、MySQL配置不科学(附神器:http://imysql.com/my-cnf-wizard.html)4、垃圾SQL满天飞二、查看系统层面负载手段1、top查看整体负载情况,快速确认哪个进程系负载高2、free查看内存情况,是否有内存泄露和用了swap等风险3、vmstat/s...转载 2019-04-18 15:17:01 · 2746 阅读 · 0 评论