首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏写代码和思考

    MySQL学习笔记(9) MySQL性能优化

    背景 本文讨论一些性能优化的原则和方法。 2.知识 性能优化是通过合理安排资源,调整MySQL参数,服务器环境等手段使得MySQL 运行更快,更节省资源。 常见的优化方法: 查询优化 数据库表结构设计优化 MySQL所在的服务器优化 可以从多个方面进行性能优化,原则是 尽量减少系统的瓶颈,减少资源的占用,加快系统的响应速度。 2.1 如何分析 使用 SHOW STATUS 了解 MySQL 数据库的性能参数 示例: SHOW STATUS LIKE '一些参数'; 使用 EXPLAIN 分析查询语句 EXPLAIN 使用索引能快速的定位到表中的某条记录,从而提高查询速度,提升性能。它能避免对数据记录行的逐行遍历。 一些注意事项: 使用 LIKE 关键字时,不要以 ”%“开头,它导致索引不起作用作用。 优化 MySQL 服务器 硬件优化 配置较大内存 配置高速磁盘 合理分布磁盘I/O 多处理器等 优化MySQL配置文件的参数 MySQL配置参数在my.cnf , my.ini 文件中,根据经验修改参数达到优化目的

    57110发布于 2021-06-29
  • 来自专栏软件工程师成长笔记

    9月17-MySQL性能优化

    MySQL性能优化策略 1、MySQL内核架构 2、索引原理与查询优化 加速MySQL高效查询数据的数据结构 二分查找(binary search) 二叉树查找(binary tree search) InnoDB MyISAM索引文件(.MYI)、数据文件(MYD) 1)所有的索引都是对等的 2)KEY 4、内存使用考量 5、分布式缓存Cache Redis、Memcached是最流行的分布式缓存 MySQL 支持缓存同步数据 1)命中率是第一要评估的数据 2)善于利用内存,请注意数据存储的格式及压缩算法 3)相关评估类似于热点数据表的介绍,热点数据,静态不变 6、性能与安全性 7、分布式架构 8、主从复制 、读写分离 主从复制 1)读写分离对负载的减轻远远不如分库分表来的直接 2)写压力会传递给从表,只读从库一样有写压力,一样会产生读写锁 3)负载均衡主要使用分库方案,主从主要用于热备和故障转移 MySQL Cluster:高可用 1)同步复制 2)自动故障切换 3)自我修复 4)无共享架构,无单点故障 5)跨地域复制 9、分库分表、分片Sharding策略 分片Sharding策略,MySQL

    47230发布于 2018-10-10
  • 来自专栏技术杂记

    mysql 迁移9

    要确保mysql 数据库的 datadir是清空的,否则会报错 [root@slave02 data]# cat restore.log nohup: ignoring input Warning: /usr/bin/innobackupex version 2.3.2 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 306a2e0 ) Original data directory /var/lib/mysql is not empty! ) Original data directory /var/lib/mysql is not empty! 开头的文件 如: .bash_history .lesshst .mysql_history .viminfo 要指明删,如 rm -rf .bash_history .lesshst .mysql_history

    1.8K20编辑于 2022-03-22
  • 来自专栏技术杂记

    mysql 迁移9

    要确保mysql 数据库的 datadir是清空的,否则会报错 [root@slave02 data]# cat restore.log nohup: ignoring input Warning: /usr/bin/innobackupex version 2.3.2 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 306a2e0 ) Original data directory /var/lib/mysql is not empty! ) Original data directory /var/lib/mysql is not empty! 开头的文件 如: .bash_history .lesshst .mysql_history .viminfo 要指明删,如 rm -rf .bash_history .lesshst .mysql_history

    1.9K20编辑于 2022-03-21
  • 来自专栏程序IT圈

    MySQL 性能优化的 9 种姿势,面试再也不怕了!

    因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度舍得尽可能小。 因为在MySQL中,ENUM类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型要快得多。这样我们又可以提高数据库的性能。 其实,有些情况下我们可以通过锁定表的方式来获得更好的性能。下面的例子就是锁定表的方法来完成前面一个例子中事务的功能。 8、使用索引 索引是提高数据库性能的常用方法,他可以令数据库服务器比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。 9、优化de的查询语句 不使用子查询 例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name=’hechunyang’); 子查询在MySQL5.5

    1.4K20发布于 2021-11-23
  • 来自专栏啄木鸟软件测试

    软件性能测试(连载9

    Linux内核根据应用程序的要求来分配内存,应用程序分配了内存可能没有实际全部使用,为了提高性能,这部分没用的内存可以留作其他用途,由于这部分内存是属于每个进程的,内核直接回收利用会带来麻烦,所以内核采用一种过度分配内存 total 交换区的总量 Swap: ###k used 使用的交换区总量 Swap: ###k free 空闲的交换区总量 Swap: ###k cached 缓冲的交换区总量 top命令进程中关于内存性能如表 3-9所示。 表3-9 top命令进程中关于内存性能参数 标记 解释 VIRT 进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。

    1.2K40发布于 2020-02-20
  • 来自专栏侯哥的Python分享

    MySQL基础9-事务

    mysql的事务默认是自动提交的,也就是说,当执行一条DML语句,Mysql会立即隐式的提交事务 二、事务操作   2.1 查看事务提交方式    select@@autocommit;   2.2 设置事务提交方式 | serializable};   说明1:session :设置仅对当前对话起作用   说明2:global :设置对全局都有用 六、事务的演示   6.1 案例使用的accout表结构及数据 mysql 在进行异常展示之前,先把数据恢复成各自2000的余额 mysql> update account set money=2000; Query OK, 2 rows affected (0.02 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from account; +----+--------+-------+ | id 6.4 案例3     使用事务完成,首先同样也是先还原数据,每个人的余额都是2000元 mysql> select * from account; +----+--------+-------+ |

    31110编辑于 2023-09-01
  • 来自专栏侯哥的Python分享

    MySQL高级9-锁

    如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 二、分类   MySQL中的锁、按照锁的粒度分,分为以下三类 全局锁:锁定数据量的所有表 表级锁:每次操作锁住整张表 行级锁:每次操作锁住对应的行数据 三、全局锁   3.1 简介     全局锁就是对整个数据库实例枷锁 执行查询语句正常的,但是执行DML语句中的更新操作却是处于阻塞状态   3.5 案例二     说明1:客户端1中设置了全局锁     说明2:客户端3中做了数据库备份的语句,其中mysqldump是和mysql 一样由MySQL服务器提供的数据库备份的命令     说明3:当数据库设置了全局锁的时候,不影响数据库的备份     说明4:MySQL备份实在终端命令行模式下,不是在数据库命令模式下,注意! 说明9:InnoDB的行锁是针对于索引加的锁,不通过索引检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁      说明10:根据业务需要,尽量使用索引当所查询条件,既快又减少阻塞

    40730编辑于 2023-09-06
  • 来自专栏Linyb极客之路

    MYSQL性能优化

    我们可以看到,前一个结果显示搜索了 7883 行,而后一个只是搜索了两个表的 9 和 16 行。查看rows列可以让我们找到潜在的性能问题。 3. 在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。 9. 使用 ENUM 而不是 VARCHAR ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。 在性能方面,当一个相同的查询被使用多次的时候,这会为你带来可观的性能优势。你可以给这些Prepared Statements定义一些参数,而MySQL只会解析一次。 固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。

    2.3K31发布于 2018-07-26
  • 来自专栏Java实战博客

    Mysql 性能优化

    说到Mysql优化,必须明确三点。 第一、不是所有的优化都是有效的。 第二、系统的稳定业务逻辑可用性往往比性能优化更重要。 第三、优化事各个部门的合作。 程序员一般是通过优化sql语句 加索引等方式 进行调优 优化的流程 sql语句与索引优化 –> 数据表优化 –> 系统配置优化 –> 硬件提升优化 性能提升按照顺序越来越低,同时代价越来越大。 like ‘%lock%’; # 查询锁状态 5. kill id; # 杀掉有问题的连接 Id是 show processonlist; 的Id 接下来常规调优 (通过查看慢日志,针对性能差的 调整索引或语句本身     Mysql的数据库存储引擎 InnoDB存储引擎 MyISAM存储引擎 等 什么是InnoDB 什么是MySIAM 两者的区别: 1、MySIAM不支持事务, 4、清表比较慢(是一条一条处理数据),先把操作写入事务日志,然后再删除,所以清表的时候 最好直接drop,再建新表 存储优化 1、禁用索引:插入记录时,Mysql会为每个记录加入索引

    1.1K10编辑于 2022-01-17
  • 来自专栏飞鸟的专栏

    mysql性能优化

    MySQL是一个广泛使用的开源关系型数据库管理系统,它可以在各种应用场景中使用,从简单的单用户桌面应用到高流量的Web应用程序。然而,MySQL性能问题是一个常见的挑战,尤其是在高负载的生产环境中。 为了解决这些问题,我们需要进行MySQL性能优化。下面是一些有用的MySQL性能优化技巧。使用索引索引是提高MySQL性能的关键。它们可以使查询更快速、更高效。 建立正确的索引,可以让MySQL更快地找到数据,从而减少查询的时间。然而,过多的索引会影响插入和更新操作的性能,因此需要权衡考虑。 MySQL支持多种缓存机制,包括查询缓存、InnoDB缓存和操作系统缓存等。缓存可以减少对磁盘的访问,提高查询性能。示例:以下是一些常用的缓存设置。 通过优化索引、查询语句、服务器参数、缓存、分区表、主从复制和连接池等方面,可以提高MySQL性能,确保系统的稳定和可靠。

    1.2K40编辑于 2023-03-27
  • 来自专栏luxixing

    MySQL性能优化

    MySQL性能优化可从如下几个方面着手 SQL优化 索引优化 数据库(表)结构优化 系统配置优化 服务器硬件优化 SQL优化 开启慢查询记录日志,查找症状(很多时候都是一些慢查询拖累了整个数据库的性能 explain 分析sql的执行 table 查询的数据表 type (可能的值 const, eq_reg, ref, range, index,all) 主键或者唯一索引一般是const,性能最好 使用汇总表,前后台业务分开 系统配置的优化 修改/etc/sysctl.conf,优化系统网络参数 修改/etc/security/limits.conf 优化打开文件数量 硬件防火墙代替软件防火墙防止网络性能消耗 mysql配置文件 innodb_buffer_pool_size innodb_buffer_pool_instances mysql 5.5引入,默认一个 ... 参数不在一一列举 第三方工具优化mysql配置 http://tools.percona.com/wizard 硬件优化 cpu选择 核数不能超过32,mysql对多核的支持并不是特别优秀 磁盘IO

    1.7K40发布于 2019-05-29
  • 来自专栏每日分享java架构小知识

    MySQL性能优化

    1 优化思路   作为架构师或者开发人员,说到数据库性能优化,你的思路是什么样的?或者具体一点,如果在面试的时候遇到这个问题:你会从哪些维度来优化数据库,你会怎么回答?    2 连接——配置优化   第一个环节是客户端连接到服务端,连接这一块有可能会出现什么样的性能问题? 有可能是服务端连接数不够导致应用程序获取不到连接。 也就是说,4 核的机器,连接池维护9个连接就 够了。这个公式从一定程度上来说对其他数据库也是适用的。这里面还有一个减少连接池大小实现提升并发度和吞吐量的案例。 而CPU的核数是有限的,频繁的上下文切换会造成比较大的性能开销。 通过主从或者分库分表可以减少单个数据库节点的访问压力和存储压力,达到提升数据库性能的目的,但是如果 master 节点挂了,怎么办? 所以,高可用(High Available)也是高性能的基础。

    2K51编辑于 2022-05-10
  • 来自专栏FREE SOLO

    MySQL性能优化

    附慢查询开启方式: 在mysql安装目录下,找到my.ini配置文件,在mysqld下加上如下配置: log-slow-queries = C:/Program Files/MySQL/MySQL Server

    1.8K30发布于 2019-04-19
  • 来自专栏程序技术知识

    MySQL性能优化

    这篇文章主要说了一些SQL方面的性能优化建议,当然仅仅优化SQL语句的性能,还无法完整的进行MySQL性能优化。 MySQL性能优化还集中在:1.服务器磁盘方面MySQL数据库是基于磁盘存储的,会对磁盘进行读写操作2.操作系统方面MySQL的三层体系架构,会涉及到cpu、内存、磁盘3.InnoDB存储引擎方面包括缓冲池 9 用连接查询代替子查询mysql中如果需要从两张以上的表中查询出数据的话,一般有两种实现方式:子查询 和 连接查询。 但缺点是mysql执行子查询时,需要创建临时表,查询完毕后,需要再删除这些临时表,有一些额外的性能消耗。这时可以改成连接查询。 mysql使用的B+树的结构来保存索引的,在insert、update和delete操作时,需要更新B+树索引。如果索引过多,会消耗很多额外的性能

    34510编辑于 2025-06-30
  • 来自专栏大闲人柴毛毛

    Mysql性能优化

    因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 优化索引   索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(), MIN()和ORDERBY这些命令的时候,性能提高更为明显 MySQL将拒绝插入那条新记录。 性能的重要参数:          key_buffer_size设置索引块的缓存大小:key_buffer_size是对MyISAM表性能影响最大的一个参数         通过:     mysql 磁盘搜索是巨大的性能瓶颈。当数据量变得非常大以致于缓存性能变得不可能有效时,该问题变得更加明显。

    2.4K110发布于 2018-03-09
  • 来自专栏编程软文

    mysql性能优化

    现在市面上mysql主流版本号是5.5, 5.7 ,8.0,5.7这个版本相对来说稳定性和兼容性都已经得到市场的验证,是比较好的一个版本。 如果索引是index或者all就需要优化,性能太低。 所以就取消了索引,但是实际测下来还是索引块,那就可以强制索引 可以设置单路排序的大小,超过这个大小就是双路,双路排序会回表,速度慢,但是不占内存.单路排序占用内存,但是数据都在内存里排序操作不会回表,性能高 左连接,左表为主,如果右表数据没有就全部为null right join右连接,右表为主,如果左表数据没有就全部为null inner join内敛: 扫描的时候会优先选择小表先进行扫描再去关联大表,保证性能 left join和right join要保证性能要考虑优先在对应那侧放小表提升性能 Extra是null说明回表了,因为返回的字段当中有一些并没有建立索引 image.png optimizer_trace

    1.4K10发布于 2021-10-09
  • 来自专栏公众号-测试驿栈

    Mysql性能优化

    Mysql性能优化 Mysql性能参数可以分为以下几个大类,这里仅整理一些常用的参数配置 连接参数 max_connections mysql服务器的最大连接数 show VARIABLES like '%connections%' 查看mysql服务器的最大连接数 Max_user_connections 单个用户最大连接数限制 set GLOBAL max_connections 设置 mysql服务器的最大连接数 max_connect_errors 每个IP的连接请求异常中断的最大次数 Connections 试图连接到mysql服务器的连接总数 show STATUS like 服务器的失败总数 2.客户端没有权限但是尝试访问MySQL 3.客户端输入的密码不对 4.超过connect_timeout限制(mysql默认是10s,除非网络环境极端不好,一般不会超时) Aborted_clients 主要的可能性有 1.客户端退出之前未调用mysql_close()正确关闭MySQL连接 2.sleep时间超过了变量wait_timeout和interactive_timeout的值,导致连接被MySQL

    2.2K20发布于 2021-10-13
  • 来自专栏JokerDJ

    MySql性能优化

    MySql优化 Mysql逻辑架构 总体分层 连接层 与客户端进行连接的服务 主要完成一些类似连接处理,授权认证 及相关的安全方案. 如果设置的不合理,比例不恰当,也会导致性能下降,sql变慢 学习 如何写出高质量的sql 如何保证索引不失效 索引 什么是索引 帮助Mysql高效获取数据的数据结构 索引就是数据结构 类似新华字典的索引目录 所有叶子节点都在同一层 5. ki(1=1…n)为关键字,且关键字按顺序升序排列k(i-1) < k 8 < 9 6. p[1],p[2],…p[m] 其中p1指向关键字小于k[1]的子树 3 < 8 p[m]指针关键字大于k[m-1]的子树 15 > 12 p[i]指向关键字属于(k[i-1],k[i])的子树 9,10 解决办法:Serializable 但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

    53710编辑于 2023-11-27
  • 来自专栏全栈程序员必看

    MySql性能测试

    Mysql性能测试主要内容 MySql数据库介绍 MySql数据库监控之重点监控指标 MySql慢查询的工作原理及操作 Sql的分析与调优的方法 MySql索引的概念及作用 MySql的工作原理及设计规范 mysql存储引擎 mysql实时监控 mysql集群监控方案 mysql性能测试的用例准备 执行测试 相信很多做性能测试的朋友都知道,性能测试并不单单只是看服务器cpu、IO、内存、网络等,我们还需要了解 Mysql性能,那么我们看看Mysql性能主要内容有哪些呢? 计算方法:queries / secondes 查询总数 除以 秒数 我们可以在mysql的终端去执行如下命令查看QPS,相信这里大家会有疑惑,现在市面上有很多工具,可以去查看mysql性能指标,为什么还需要单独去执行命令查看 9) ref: where col1 = ‘ac’ ac是常量,但是col1是非唯一性索引,找到非唯一性索引的全部行 ? 10) rang: ? 11) index: ?

    2.5K40发布于 2021-05-27
领券