首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Laoqi's Linux运维专列

    MySQL

    MySQL可以从几个方面来做: 1. 架构层: 做从库,实现读写分离; 2. MySQL本身: 如果未配置主从同步,可以把bin-log功能关闭,减少磁盘i/o 在my.cnf中加上skip-name-resolve,这样可以避免由于解析主机名延迟造成mysql执行慢 调整几个关键的 如何可以参考5. 4. 应用层次: 查看慢查询日志,根据慢查询日志优化程序中的SQL语句,比如增加索引 5. 为了避免一些错误我们一般都设置比较大,比如说10000 max_connections 最大的连接数,根据业务请求量适当调整,设置500足够 max_user_connections 是指同一个账号能够同时连接到mysql mysql经历: http://www.apelearn.com/bbs/thread-11281-1-1.html ----

    1.5K90发布于 2018-05-09
  • 来自专栏数据库相关

    mysql工具

    修改 my.cnf 后记得重启 MySQL 。重启后再运行 MySQLTuner 检查。 另外需要注意的是 MySQL 需要启动 24 小时候再运行 MySQLTuner ,不然有些内容会不准。 mysqladmin <path>  Path to a custom mysqladmin executable       --mysqlcmd <path>    Path to a custom mysql template file       --verbose            Prints out all options (default: no verbose) 例如我有1台服务器,上面跑的是多实例的mysql /mysqltuner.pl --socket /data/multi_instance/3306/mysql.sock

    1.3K40发布于 2019-09-18
  • 来自专栏java闲聊

    Mysql Limit

    .* FROM student s WHERE s.id BETWEEN 1000000 AND 1000010; 性能对比图 可以看到三种SQL的耗时 ,为什么会有这么大的差距,这主要是MySQL

    2K00发布于 2019-04-18
  • 来自专栏全栈开发日记

    MySQL性能

    后端程序员在面试中,经常会被问到SQL的操作,于是我也是去补习了一下这方面的知识,感谢各方大佬提供的点子,这里总结如下。 6- MySQL如下表达式不会使用索引: select * from where id + 1 = 5 虽然我们很容易看出来id+1=5等价于id=4,但是MySQL无法自动解析这个表达式,使用函数是同样的道理 尽量使用连接(JOIN)来代替子查询 连接(JOIN)之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。 如果有对应的索引,通常效率会不错,否则,MySQL需要做大量的文件排序操作。 一个常见的问题是当偏移量非常大的时候,比如:LIMIT 10000,20这样的查询,MySQL需要查询10020条记录然后只返回20条记录,前面的10000条都将被抛弃,这样的代价非常高。

    1.1K10编辑于 2022-05-12
  • 来自专栏闵开慧

    mysql性能

    mysql思路: 1.数据库设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎  2.数据的应用--怎样取数据,sql语句的优化  3.mysql服务优化--内存的使用,磁盘的使用  4. 对 MySQL 进程的设置进行。 3.       对查询进行优化。 替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源。不过这种解决方案也就仅限于此了。 第二种方法是对 MySQL 服务器(也称为 mysqld)进行。对这个进程进行意味着适当地分配内存,并让 mysqld 了解将会承受何种类型的负载。加快磁盘运行速度不如减少所需的磁盘访问次数。 尽管本文并没有包含查询方面的内容(很多著作中已经针对这个主题进行了探讨),不过它会配置 mysqld 来报告可能需要进行的查询。 结束语 本文介绍了对 MySQL 进行的一些基础知识,并对这个针对 LAMP 组件进行的 3 部分系列文章进行了总结。

    1.7K50发布于 2018-03-30
  • 来自专栏MySQL

    MySQL性能参考

    前言 说起mysql一般都会想到sql优化、索引、看执行计划,除了这些在创建表时也要下功夫,比如说字段的类型、数据的冗余度,以及sql运行过程中性能的监控都很重要。 三、合理使用索引 索引的建立可以大大提高mysql的检索效率,但是在insert、update、delete会降低更新表的速度,因为更新表时不仅要保存数据还要维护索引文件。 特殊名词 回表:mysql默认给主键创建索引,其叶子节点存放行数据。普通索引叶子节点存放主键,当使用普通索引查询到主键时会再一次根据主键查询一次索引树,会有两次的树的操作,这个行为是回表。 编辑 performance schema 本身是一个数据库,有80+张表,存储mysql运行过程中的性能相关的数据。

    50421编辑于 2024-01-23
  • MySQL复制以及

    实现复制 实现复制有以下步骤: 1.设置MySQL主库的二进制日志以及server-id MySQL配置文件一般存放在/etc/my.cnf ini 代码解读复制代码# 在[mysqld]下面添加配置选项 重启MySQL。 注:如果MySQL配置文件中已经配置过此文件,则可以跳过此步。 2.新建复制账号 在主库里面新建用于从库复制主库数据的账号,并授予复制权限。 mixed 混合上面两种日志格式记录记录日志,至于什么时候使用哪种日志方式由MySQL本身决定。 可以平衡上面两种日志格式的优缺点。 mysql5.7以前默认使用statement格式。 需要注意的地方 重启MySQL最好切换未MySQL用户再进行操作,不然文件启动后会有权限问题。 搭建好MySQL的环境后就设置好配置里的log-bin选项,这样以后如果数据库需要从库的复制,就不需要重启数据库,打断业务的进行。 需要打开主库的防火墙的对应的mysql端口。

    43010编辑于 2025-03-13
  • 来自专栏java_joseph

    mysql哪些事儿

    说明 终于到了精细策划的mysql环节了!!!! ,但是真正做到mysql,光理论是不行的,而且,一般程序员crud很难接触到的知识,所以这篇文章,面向实战+理论,我也会把这里构建mysql的工具集,也就是说,真正碰到需要的的场景,这篇文章就会起很大的作用 基础知识 上篇文章,过于理论,索引命令放到这里,便于使用。至于慢查询日志和explain是mysql必备的! 这里提供一个库,docker 部署mysql8.0的链接,自行部署即可 docker-mysql8.0踩坑敏感问题 | Joseph's Blog (gitee.io) 用的这个库 新建数据库 shop 这个就没什么好说的了 partions分区表,这个一般不属于范畴, type这个就很重要了,这个指的是mysql找到某一行的方式,!

    70152编辑于 2023-08-06
  • 来自专栏PHP在线

    MySQL初始配置

    随着 大量默认选项的改进, MySQL 5.6比以前版本需要的选项大为减少。 在本文中我将讲述需要优化的配置项。    针对专用MySQL服务器,建议指定为物理内存的 50-80%这个范围。 例如,拥有64GB物理内存的机器,缓存池应该设置为50GB左右。    MySQL用户手册 和 Bug #54306 详细地说明了这一点。innodb_flush_neighbors -- 默认值为 1. 这是mysql 5.6中引入的一个新选项。 Mark Callaghan 提供了 一些配置建议。 sql-mode -- MySQL默认对不规范的数据很宽容,并且会静默地截断数据。

    2.8K60发布于 2018-03-07
  • 来自专栏多线程

    MySQLMySQL Explain性能详解

    专栏持续更新中:MySQL详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL 所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。 如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引 要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。 ,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤 Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询

    66710编辑于 2023-12-14
  • 来自专栏JavaJourney

    MySQL之查询优化

    确认MySQL服务器层是否在分析大量超过需要的数据行 是否向数据库请求了不需要的数据 查询不需要的记录 我们常常会误以为MySQL会只返回需要的数据,实际上MySQL却是先返回全部结果再进行计算,在日常的开发习惯中 语法解析器和预处理 MySQL通过关键字将SQL语句进行解析,并生成一颗解析树,MySQL解析器将使用MySQL语法规则验证和解析查询。 MySQL的最优可能跟你想的不一样 MySQL的优化是基于成本模型的优化,但是有可能不是最快的优化。 关联查询(join) MySQL的关联查询很重要,但其实关联查询执行的策略比较简单: MySQL对任何关联都执行嵌套循环关联操作,即MySQL先在一张表中循环取出单条数据,然后再嵌套到下一个表中寻找匹配的行 (第3版)》 MySQL官方网站 https://dev.mysql.com/doc/refman/5.7/en/ 看完点赞,养成习惯。

    1.4K10发布于 2020-12-02
  • MySQL 索引与性能

    索引用于快速找出在某个列中有一特定值的行,如果不使用索引MySQL必须从第l条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻数据文件 《MySQL5.7从入门到精通》 - 刘增杰 通俗的来说索引是一种数据结构,是帮助MySQL进行高效检索数据的一种机制,你可以简单理解为排好序的快速查找数据结构, 索引都是B+树(多路搜索树)结构组织的索引 mysql无法利用索引完成排序,操作成为文件排序。 ]# mysqldumpslow -s -r -t 10 /var/lib/mysql/localhost-slow.log -- 得到访问次数最多的10个SQL [root@localhost mysql [root@localhost mysql]# mysqldumpslow -s -t -t 10 -g 'left join' /var/lib/mysql/localhost-slow.log show

    2.6K20编辑于 2022-12-28
  • 来自专栏Java学习录

    初窥MySQL性能

    本文涉及:MySQL自带的性能测试工具mysqlslap的使用及几个性能的方法 性能测试工具—mysqlslap mysqlslap是MySQL自带的一款非常优秀的性能测试工具。 create-schema='test' --query='select * from u_trade_pay_order limit1000;' --number-of-queries=10 影响MySQL Max_used_connections';show variables like 'max_connections%'; 连接数不够的原因 连接数设置过低或过高 慢查询导致IO阻塞,导致连接长时间不释放 SQL执行完,连接未释放 修改MySQL

    87540发布于 2019-06-13
  • mysql之利器explain

    MySql很大一部分是索引调整,mysql的explain语句能够查看sql的效率。 (2)possible_kyes和key 表示可能用到的索引,以及最终采用到的索引; (3)rows 表示mysql根据表的统计信息估算出需要读取的行数,理论上rows越少,性能就越好。 最差的就是using where,innodb返回结果后,mysql执行器还要对结果进行where过滤。一般要和explian返回的type字段进行综合考虑。

    10410编辑于 2025-12-23
  • 来自专栏开源优测

    MySQL诊断常用SQL语

    在很多时候,我们需要通过SQL语句来查看MySQL执行SQL的情况,例如查看SQL执行队列,是否存在慢查询等等。 先看下基础配置,监控mysql执行的sql语句需要先开启相关日志 linux系统 可以在/etc/mysqld中添加如下: 指定日志路径 log =/usr/local/mysql/mysql.log (这个路径自定义即可) 就可以使用: tail -f mysql.log 如果需要监控慢查询可以添加如下内容: 添加慢查下记录 log-slow-queries = /usr/local/mysql/slowquery.log mysql_log.sql" (这里路径自定义即可) 然后,重新启动mysql,就可以实时看到myql服务器当前正在执行的语句了。 查看某条sql各阶段执行时间,可开启profiling功能 set global profiling=on; 其他的,大家可以去搜索下,更多的SQL性能分析、方面的常用语句 大家可以自己动手去试试上面的语句

    1.4K40发布于 2019-05-30
  • 来自专栏Mysql入门到入魔

    Mysql关于面试题

    是否有过 MySQL 经验?面试官提出的问题:“在你以往的项目开发或维护经历中,是否有遇到过 MySQL 性能瓶颈并进行的情况? 请详细描述一下你遇到的具体问题、诊断过程、采取的措施以及最终的效果。”问题的重点:实际经验:面试官希望了解面试者是否真正有过处理 MySQL 性能问题的实战经验。 面试者如何回答:开场白:“是的,我在多个项目中遇到过 MySQL 性能的需求,特别是在一个高并发的电商平台上,数据库性能直接关系到用户体验和系统稳定性。下面我将分享一次具体的经历。” 开发中使用过哪些工具?面试官提出的问题:“在MySQL数据库的开发和运维过程中,是提升系统性能的关键环节。请问,你在实际项目中使用过哪些MySQL工具?它们各自的作用是什么? 综合分析能力:了解面试者是否能够将多个工具结合使用,形成一套完整的策略。面试者如何回答:开场白:“在MySQL的开发和运维实践中,我使用过多种工具来帮助识别和解决性能问题。

    33600编辑于 2025-01-26
  • 来自专栏GitHub专栏

    4 款 MySQL 工具,yyds!

    今天和大家分享几个 mysql 优化的工具,你可以使用它们对你的mysql进行一个体检,生成awr报告,让你从整体上把握你的数据库的性能情况。 ? mysqltuner.pl 是mysql一个常用的数据库性能诊断工具,主要检查参数设置的合理性包括日志文件、存储引擎、安全建议及性能分析。针对潜在的问题,给出改进的建议。是mysql优化的好帮手。 /mysqltuner.pl --socket /var/lib/mysql/mysql.sock >> MySQLTuner 1.7.4 - Major Hayden <major@mhtx.net tuning-primer.sh mysql的另一个优化工具,针于mysql的整体进行一个体检,对潜在的问题,给出优化的建议。 [root@localhost ~]# pt-variable-advisor localhost --socket /var/lib/mysql/mysql.sock 报告分析 重点关注有WARN的信息的条目

    1.1K31发布于 2021-08-05
  • 来自专栏区块链入门

    【实践】MySQL的最强连招

    比如我们可以在 my.cnf 中添加如下代码,然后退出重启 MySQL。 type,这个选项表示表的连接类型,这个选项很有深入研究的价值,因为很多 SQL 的都是围绕 type 来讲的,但是这篇文章我们主要围绕优化方式来展开的,type 这个字段我们暂时作为了解,这篇文章不过多深入 上面就是 type 内容的大致解释,关于 type 我们经常会在 SQL 的环节使用 explain 分析其类型,然后改进查询方式,越靠近 system 其查询效率越高,越靠近 all 其查询效率越低 2、MySQL 检查表 数据库经常可能遇到错误,比如数据写入磁盘时发生错误,或是索引没有同步更新,或是数据库未关闭 MySQL 就停止了。 3、MySQL 优化表 MySQL 优化表适用于删除了大量的表数据,或者对包含 VARCHAR、BLOB 或则 TEXT 命令进行大量修改的情况。

    2.1K20发布于 2021-07-16
  • 来自专栏MySQL数据库技术栈

    MySQL写性能监控及

    磁盘性能对数据库的读写能力影响很大,如何从多个角度监控数据库的写性能就变得至关重要,当写性能成为瓶颈时我们又该如何呢? Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total,通过该比值可以看出脏页的占比情况,如果该系统脏页占比持续增高,说明该系统是以写为主,根据情况进行 二、写压力参数 1、刷新脏页的频率 mysql> show variables like '%innodb_lru_scan_depth%'; #默认1024,遍历lru list刷新脏页,值越大, 3、redolog的刷新机制 mysql> show variables like '%innodb_flush_log_at_trx_commit%'; 默认MySQL的刷盘策略是1,最安全的,但是安全的同时 4、内存脏页占比控制 mysql> show variables like '%innodb_max_dirty_pages_pct%'; #在内存buffer pool空间允许的范围下,可以大脏页允许在内存空间的占比

    1.1K10编辑于 2022-05-25
  • 来自专栏devops_k8s

    Mysql之分区表

    MySQL5.5中提供了非整数表达式分区的支持。 2.3 分区表对索引的限制 如果分区字段中有主键或者唯一索引的列,那么多有主键列和唯一索引列都必须包含进来。 2.4 分区表中无法使用外键约束 2.5 数据与索引同在 MySQL的分区适用于一个表的所有数据和索引,不能只对表数据分区而不对索引分区,也不能只对索引分区而不对表分区,也不能只对表的一部分数据分区 当删除一条记录时,分区层先打开并锁住所有的底层表,然后确定数据对应的分区,最后对相应底层表进行删除操作; 3.4 update操作 当更新一条记录时,分区层先打开并锁住所有的底层表,mysql mysql先确定这条记录属于哪个分区,再将记录写入对应得曾分区表,无须对任何其他分区进行操作。 的使用 在当前的建表语句中可以看到,store_id的值在1-5的在p0分区,6-10的在p1分区,11-15的在p3分区,16-20的在p4分区,但是如果插入超过20的值就会报错,因为mysql

    2K31编辑于 2022-01-13
领券