MySQL调优案例分享
发表于|更新于|数据库
|总字数:33|阅读时长:1分钟|浏览量:
MySQL调优案例分享——技术分享
文章作者: 逐光
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 逐光の博客!
相关推荐

2022-01-07
MySQL索引合并优化
一、问题背景之前遇到过一个关于MySQL索引的面试题,问题如下: 一张数据库表t其中有3列为a、b、c,分别为每一个列单独建立一个二级索引,那么现在有一个查询条件select * from t where a=? and b=? and c=?请问上述SQL语句,MySQL存储引擎在执行查询的时候,哪些索引将会被使用到? 当时一顿分析,还谈到了MySQL基于成本估算的优化,认为MySQL优化器先基于a、b、c三个列的索引区分度,选择索引区分度较高的索引进行扫描,根据第一个索引的扫描结果,如果第一个索引的扫描结果集高于一个固定量级,则继续选择第二个索引进行扫描,依次判断是否需要使用第三个索引,如果第一个索引的扫描结果集小于一个固定量级,则直接根据第一个索引的扫描结果集进行回表查询到列记录,再根据未使用到的2列进行过滤。 最后得出的结果是:a、b、c 3个索引都可能被使用到,具体使用到哪些索引,取决于3个索引的区分度以及表的数据量。 正确答案上面的问题应该用索引合并优化的原理来分析,上述的SQL的where条件满足了索引合并优化中的Index Merge Intersection...

2019-07-02
MySQL插入速度测试
一、测试环境1.1 硬件环境 名称 配置 操作系统 win7 64位 CPU 4核4线程 i5-4590 内存 16G 硬盘 128G SSD MySQL Version 5.6 1.2 数据库表结构CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `sex` int(11) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 二、插入实验2.1 普通插入 线程数 插入量(...

2023-03-09
MySQL行锁升级邻键锁的Bug引起死锁问题排查
一、问题现象线上接口在并发请求的场景部分请求失败,查询线上日志发现时出现死锁,异常日志如下: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction ### The error may exist in com/....../dao/mapper/ShortLinkMapper.xml ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: select * from short_link_id_map where table_name_index = ...

2023-05-06
Kube-Prometheus监控MySQL(二)
一、概述本文介绍如何使用 Kube-Prometheus 监控 MySQL 数据库。通过部署 MySQL Exporter,将 MySQL 的性能指标暴露给 Prometheus 进行采集和监控。 核心组件: MySQL Exporter:用于暴露 MySQL 指标的 Exporter(镜像版本:v0.14.0) ServiceMonitor:Prometheus Operator 的 CRD,用于服务发现和指标采集配置 二、部署 MySQL Exporter2.1 创建 Deployment通过 Deployment 部署 MySQL Exporter,需要配置数据库连接信息。 apiVersion: apps/v1 kind: Deployment metadata: #设置唯一名称,建议添加数据库实例ip name: mysql-exporter-172.16.1.77 namespace: monitoring labels: app.kubernetes.io/component: exporter app.kubernetes....

2024-12-30
MySQL主从监控配置-Helm部署方案
一、背景简介生产环境的MySQL监控面临着部署复杂、标签不统一、管理困难等问题。传统方式中每个MySQL实例都需要单独部署一个exporter,部署方式繁琐,采集的指标标签不统一,无法在监控图表上快速检索查看。 核心解决问题: 简化MySQL监控的部署流程 统一监控指标标签格式 支持灵活的多实例监控管理 提供安全的认证信息存储 本方案采用Helm部署mysql-exporter实现MySQL监控采集,可以灵活增加mysql监控实例,大大简化了运维管理复杂度。 二、部署文件准备2.1. 必需文件清单 文件类型 文件名称 说明 Helm Charts prometheus-mysql-exporter-2.10.0.tgz prometheus-mysql-exporter chart部署包 配置文件 mysql-exporter-values.yaml mysql-exporter配置文件 版本说明: 推荐使用prometheus-mysql-exporter 2.10.0或更新版本 Chart包包含了完整的Kubernetes资源定义 values...

2021-12-20
Linux服务器重启后mysqld.service未创建/var/run/mysqld
一、问题背景开发环境的数据库服务器重启后,启动MySQl服务报错,错误如下: [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory) [ERROR] Can't start server: can't create PID file: No such file or directory 之前看到上面错误日志都是手动创建/var/run/mysqld目录,然后将目录的属主修改为mysql用户,如下: mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld 上面方式,每次服务器重启后都要重新执行,所以分析一下问题原因,探索一种永久的解决方案。 MySQL版本...
评论