首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏迁移内容

    性能MySQL(3)——创建高性能索引

    索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。 一、索引的类型 在MySQL中,索引是在存储引擎层而不是服务器层实现的。 三、高性能的索引策略 3.1、独立的列 索引列不能是表达式的一部分,也不能是函数的参数。 例如:LELECT COUNT(DISTINCT city)/COUNT() AS sel1, COUNT(DISTINCT LEFT(city, 3))/COUNT() AS sel2, …; 如果前缀的选择性接近 例如:key(col1, col2, col3); MySQL5.0之后的版本引入了“索引合并”的策略,一定程度上可以使用表上的多个单列索引来定位表中的行; 索引合并策略有时候是一种优化后的结果,但实际上更说明表上的索引建得很糟糕 参考: 《高性能 MySQL 第三版》 聚簇索引和非聚簇索引 mysql-覆盖索引 创建高性能的索引

    1.6K20编辑于 2022-12-01
  • 来自专栏程序人生 阅读快乐

    性能MySQL(第3版)

    《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。 第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。 全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的mysqlmysql相关工具等方面的内容。 《高性能mysql(第3版)》不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

    1.1K20发布于 2018-10-10
  • 来自专栏写PHP的老王

    性能MySQL(第3版)阅读笔记

    3、数据类型越短越好,尽量避免NULL(NULL索引,统计,比较更复杂,可为NULL的列需要的存储空间更多) 4、整数(tinyint 8位,smallint 16位,mediumint 24位,int mysql5 在存储varchar 的时候,空格会保留?? 8、以下情况适合使用varchar[高性能MySQL(第3版)p115]: 字符串最大长度比平均长度大很多,列的更新少(不会产生碎片);使用类似UTF8字符集,每个字符使用不同字节数存储 9、char ,mysql会根据定义的长度分配固定空间,当存储cahr类型数据,mysql会去除末尾空格。 对于in中有大量值时,in查询比or快 18、mysql 文件排序需要的空间比想象的要大得多,因为mysql会给排序记录分配足够长度的固定长度的空间,排序消耗的临时空间比磁盘上原有空间大得多。

    1K40发布于 2019-08-12
  • 来自专栏cwl_Java

    3分钟速读原著《高性能MySQL》(三)

    配置项设置都使用小写,单词之间用下划线或横线隔开 3.配置文件示例 [mysqld] #GENERAl datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock 第九章 操作系统和硬件优化 一.限制MySQL性能的关键因素 服务器硬件 服务器系统 数据库存储引擎的选择 数据库参数配置 数据库结构设计和SQL语句 1.硬件选择 选择固态硬盘,传统机械硬盘就像是一个旋转的传送带 然后盘片就需旋转到正确的扇区上(这就是旋转时延).这套动作需要时间,这段时间就是我们在访问磁盘时会产生的时间. 2.系统选择 使用linux系统,相比之下比Windows系统减少了很多不必要的内存堆积 3. 传统机械硬盘选择RAID 10,如果是固态硬盘SSD性价比更高 第十章 复制 一.复制的搭建步骤 1.配置主库和从库 2.创建复制的账号 3.创建主库一致性快照 4.根据主库的快照,建立从库 5.开启复制 master上所有的变更都能复制到slave上 在执行以下操作时,只需更少的行锁 缺点 会产生大量的日志 不会对二进制日志进行校验 不推荐基于库级别的复制 3.MIXED MIXED是上述两者的的结合

    74820发布于 2019-10-26
  • 来自专栏cwl_Java

    3分钟速读原著《高性能MySQL》(一)

    本系列主要是针对<高性能MySQL>原著进行内容抽取,帮助开发者快速阅读书籍 第一章 MySQL架构与历史 一.锁机制 1.读写锁 1.1 读锁(共享锁):多个用户在同一时刻可以同时读取同一个资源,而且互不干扰 ):操作将永久改变 2.没有事务将产生的问题 2.1 脏读:读取了其它操作中未提交的数据 2.2 不可重复读:两次查询结果不一致,由于更新导致 2.3 幻读:两次查询结果不一致,由于新增或者删除导致 3. 总结:MySQL还有其它很多的存储引擎,然而那些都没啥用处.大部分情况下InnoDB都是正确选择,除非需要使用到它不具备的特性 第二章 MySQL的基准测试 测试流程和测试工具推荐一位写的不错的博客 ,古寨城主.对于普通开发者而言,跟着该步骤操作一下即可,不建议十分深入 第三章 服务器性能剖析 1.定义性能最有效的是响应时间 2.性能优化的前提是进行响应时间的测量 3.测量的开始点是应用程序,而不是数据库 ,减少了表之间的连接 但如果冗余数据量过大的时候,可能会碰到I/O瓶颈,导致性能变得更差,所以需要 衡量各个表的更新量和查询量 在数据统计分析,数据仓库等领域使用的比较多 3.缓存表,汇总表,

    97910发布于 2019-10-26
  • 来自专栏cwl_Java

    3分钟速读原著《高性能MySQL》(四)

    第十一章 MySQL的可拓展性 可扩展性:增加同等设备获得同等能力 1.拓展MySQL 向上扩展:也称为垂直扩展,通过提升硬件内存cpu固态等获得性能提升 优点:单台服务器比多台服务器更容易维护和开发 能很好保证业务不断增长时数据的安全和随时的扩展 基于NDB引擎:一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性 基于中间件/proxy 基于共享存储 基于主机高可用 3. 3.DB Ninja ? DbNinja是一款先进的基于Web的MySQL数据库管理与开发应用程序。它是远程访问托管服务器的必然之选。 SQLyog是一款功能最强大的MySQL管理工具,它综合了MySQL工作台、php MyAdmin和其他MySQL前端及MySQL GUI工具的特点。 该款应用程序可以同时连接任意数量级的MySQL服务器,用于测试和生产。所有流程仅需登录MySQL root以收集数据,用户无需安装在MySQL服务器上。 10.Sequel Pro ?

    1.6K30发布于 2019-10-26
  • 来自专栏cwl_Java

    3分钟速读原著《高性能MySQL》(二)

    第五章 创建高性能的索引 1.索引类型 1.1 普通索引 NORMAL: 是最基本的索引,它没有任何限制。 column_name)<2017; 3.6 不使用not in和<>操作 4.索引方法 hash:精准查询使用 B-Tree:范围查询使用 5.通过EXPLAIN优化索引 推荐文章 第六章 查询性能优化 查询优化器的局限性 3.1 子查询大部分情况下都很差,但并不代表所有情况都很差,所以可以通过EXPLAIN看它的执行计划来判定最终是否要使用子查询 第七章 MySQL的高级特性 一.分区表 1.分区表需要具备以下条件 行数据基于一个给定连续范围分区 2.2 LIST分区:同RANGE,区别在于给定的不是连续范围,是离散的值 2.3 HASH分区:根据用户自定义的表达式的返回值进行分区,返回值不能是负数 2.4 KEY分区:根据MySQL MySQL数据库还支持一种LINEAR HASH的分区,他使用一个更复杂的算法来确定新行插入的分区。

    76210发布于 2019-10-26
  • 来自专栏Linyb极客之路

    MYSQL性能优化

    当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。 查看rows列可以让我们找到潜在的性能问题。 3. 在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。 在性能方面,当一个相同的查询被使用多次的时候,这会为你带来可观的性能优势。你可以给这些Prepared Statements定义一些参数,而MySQL只会解析一次。 固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。

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

    Mysql 性能优化

    说到Mysql优化,必须明确三点。 第一、不是所有的优化都是有效的。 第二、系统的稳定业务逻辑可用性往往比性能优化更重要。 第三、优化事各个部门的合作。 程序员一般是通过优化sql语句 加索引等方式 进行调优 优化的流程 sql语句与索引优化 –> 数据表优化 –> 系统配置优化 –> 硬件提升优化 性能提升按照顺序越来越低,同时代价越来越大。 调整索引或语句本身     Mysql的数据库存储引擎 InnoDB存储引擎 MyISAM存储引擎 等 什么是InnoDB 什么是MySIAM 两者的区别: 1、MySIAM不支持事务, 使用行锁,粒度更小,写操作,不会锁定全部表,多线程效率更高,即使存在更新、插入性能也比较好 4、清表比较慢(是一条一条处理数据),先把操作写入事务日志,然后再删除,所以清表的时候 最好直接drop ,再建新表 存储优化 1、禁用索引:插入记录时,Mysql会为每个记录加入索引,如果数据量很大,那么就会严重影响速度。

    1.1K10编辑于 2022-01-17
  • 来自专栏FREE SOLO

    MySQL性能优化

    3、索引字段长度应较短而长度固定。 4、索引字段重复不能过多。 5、Hash索引与BTree索引区别。 3、对定长、MD5哈希码、长度较短的字段使用char类型,提高效率;对边长而且可能较长字段使用varchar类型,节约内存。 3、join查询中,如果order by 与 group by如果使用的不都是第一张表上的字段,就会产生临时表。 4、order by中使用distinct函数。 3、避免大事务操作,提高并发能力。 4、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。 附慢查询开启方式: 在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存储引擎方面包括缓冲池 、后台线程、日志写方式、插入缓冲、索引、异步io、刷新邻接页、约束、锁、事务等等4.基于binlog的主从复制架构想全面进行MySQL性能优化的,可以关注我的微信公众号:DB这篇文章从15个方面,分享了 但缺点是mysql执行子查询时,需要创建临时表,查询完毕后,需要再删除这些临时表,有一些额外的性能消耗。这时可以改成连接查询。 mysql使用的B+树的结构来保存索引的,在insert、update和delete操作时,需要更新B+树索引。如果索引过多,会消耗很多额外的性能

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

    Mysql性能优化

    如果不显式定义主键的话,可能会导致InnoDB每次都需要对新数据行进行排序,严重损害性能     3MySQL server服务器配置优化    1)使用show variables 了解服务器参数    2)show status 了解服务器运行状态,如锁等待情况,当前连接数等    3)影响mysql 性能的重要参数:          key_buffer_size设置索引块的缓存大小:key_buffer_size是对MyISAM表性能影响最大的一个参数         通过:     mysql 2)减少对mysql的访问,使用mem缓存等 3)负载均衡,复制分流查询操作            利用mysql的主从复制,分流更新操作和查询操作           1), 创建复制账号:Gran 2)垂直拆分   如果表记录数并不多,可能也就2、3万条,但是字段却很长,表占用空间很大,检索表时需要执行大量I/O,严重降低了性能

    2.4K110发布于 2018-03-09
  • 来自专栏每日分享java架构小知识

    MySQL性能优化

    1 优化思路   作为架构师或者开发人员,说到数据库性能优化,你的思路是什么样的?或者具体一点,如果在面试的时候遇到这个问题:你会从哪些维度来优化数据库,你会怎么回答?    2 连接——配置优化   第一个环节是客户端连接到服务端,连接这一块有可能会出现什么样的性能问题? 有可能是服务端连接数不够导致应用程序获取不到连接。 而CPU的核数是有限的,频繁的上下文切换会造成比较大的性能开销。 通过主从或者分库分表可以减少单个数据库节点的访问压力和存储压力,达到提升数据库性能的目的,但是如果 master 节点挂了,怎么办? 所以,高可用(High Available)也是高性能的基础。 3.4.2 NDB Cluster   https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-overview.html

    2K51编辑于 2022-05-10
  • 来自专栏飞鸟的专栏

    mysql性能优化

    MySQL是一个广泛使用的开源关系型数据库管理系统,它可以在各种应用场景中使用,从简单的单用户桌面应用到高流量的Web应用程序。然而,MySQL性能问题是一个常见的挑战,尤其是在高负载的生产环境中。 为了解决这些问题,我们需要进行MySQL性能优化。下面是一些有用的MySQL性能优化技巧。使用索引索引是提高MySQL性能的关键。它们可以使查询更快速、更高效。 建立正确的索引,可以让MySQL更快地找到数据,从而减少查询的时间。然而,过多的索引会影响插入和更新操作的性能,因此需要权衡考虑。 THAN (2010), PARTITION p1 VALUES LESS THAN (2011), PARTITION p2 VALUES LESS THAN (2012), PARTITION p3 通过优化索引、查询语句、服务器参数、缓存、分区表、主从复制和连接池等方面,可以提高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
  • 来自专栏全栈程序员必看

    MySql性能测试

    Mysql性能测试主要内容 MySql数据库介绍 MySql数据库监控之重点监控指标 MySql慢查询的工作原理及操作 Sql的分析与调优的方法 MySql索引的概念及作用 MySql的工作原理及设计规范 mysql存储引擎 mysql实时监控 mysql集群监控方案 mysql性能测试的用例准备 执行测试 相信很多做性能测试的朋友都知道,性能测试并不单单只是看服务器cpu、IO、内存、网络等,我们还需要了解 Mysql性能,那么我们看看Mysql性能主要内容有哪些呢? MySQL中无法利用索引完成的排序操作称为“文件排序” 索引顺序是col1、col2、col3,where用到col1 ,order by用到col3但是,但是中间少了col2 ? 3代表该查询衍生自第三个select查询,即id为3的select。

    2.5K40发布于 2021-05-27
  • 来自专栏编程软文

    mysql性能优化

    3.慢查询定位 慢查询 show variables like '%query%'; #查询慢日志相关信息,定位慢查询 slow_query_log 默认是off关闭的,使用时,需要改为on打开 slow_query_log_file 如果索引是index或者all就需要优化,性能太低。 null,is not null 也无法使用索引(解决方案,空值用专门特定常量值定义,比如def等) EXPLAIN SELECT * FROM employees WHERE name is null 3. mysql在使用不等于(! left join和right join要保证性能要考虑优先在对应那侧放小表提升性能 Extra是null说明回表了,因为返回的字段当中有一些并没有建立索引 image.png optimizer_trace

    1.4K10发布于 2021-10-09
  • 来自专栏JokerDJ

    MySql性能优化

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

    54310编辑于 2023-11-27
  • 来自专栏公众号-测试驿栈

    Mysql性能优化

    Mysql性能优化 Mysql性能参数可以分为以下几个大类,这里仅整理一些常用的参数配置 连接参数 max_connections mysql服务器的最大连接数 show VARIABLES like 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 进程终止 3.客户端在数据传输过程中突然结束 select USER,COUNT(USER) AS CNT from information_schema.PROCESSLIST GROUP BY USER

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

    性能优化-MySQL性能优化参数

    mysql的监控方法大致分为两类: 连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标。 直接使用mysqladmin查看其性能指标,例如: UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 - 当table cache不够用的时候,MySQL会采用LRU算法踢掉最长时间没有使用的表。如果table_cache设置过小,MySQL就会反复打开、关闭 frm文件,造成一定的性能损失。 一般最大指定为3M比较合适。 innodb_flush_logs_at_trx_commit 作用:控制事务的提交方式 分配原则:这个参数只有3个值,0,1,2请确认一下自已能接受的级别。默认为1,主库请不要更改了。

    7.4K20发布于 2020-02-13
领券