![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql
文章平均质量分 60
Mysql从入门到放弃
TizzyGoodhealth
反派角色
展开
-
Lock wait timeout exceeded; try restarting transaction\n; Lock wait timeout exceeded; try restarting
Lock wait timeout exceeded; try restarting transaction\n; Lock wait timeout exceeded; try restarting 问题解决原创 2023-03-01 14:38:11 · 731 阅读 · 0 评论 -
Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes of storage;
但这样是治标不治本的解决方法,归根结底还是事务太大了,应当从业务角度去解决,避免出现大事务。我们都知道提交事务过程,先写入binlog,然后再提交处于commit事务状态。经百度查询是提交事务大小超过 mysql binlog 大小。最大可能设置为 16EB (exabytes)。推荐最大设置为40G,原创 2023-03-01 13:47:23 · 337 阅读 · 0 评论 -
SQL性能优化15个小技巧
大家好,我是Tom哥~,今天跟大家聊聊SQL性能优化,具有很强的工作实用性。前言sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。1 避免使用select *很多时候,我们写sql语句时,为了方便,喜欢直接使用sele转载 2022-01-01 14:01:11 · 7258 阅读 · 6 评论 -
sql中优雅的判断是否存在某个存在
一般开发中我们判断某个用户名是否存在往往使用以下sqlselect count(*) from user WHERE name = '张三' AND status = 1 数量大于1就表示存在,不能再新增了我们都知道innodb每次count(*)都是会把符合条件的行数返回然后相加的总数,如果数据量特别大呢,需要扫描结束才能返回。对此,我们需要将sql改良一下只要sql扫描到一条就让他返回,对此sql应该这么写select 1 from user WHERE name = '张原创 2021-12-17 21:06:29 · 1181 阅读 · 0 评论 -
MySql GROUP_CONCAT踩坑记录
今天遇到一个问题,在使用GROUP_CONCAT 拼接订单号时候,并且去重,出现下面这种情况,实际上是一个数据,但是后台返回给前台数据一会儿是2条重复数据,一会儿是1条不重复数据搞得很郁闷,后来查来查去是GROUP_CONCAT 本身拼接字段是没有顺序的,是无规则的,解决办法也很简单就是让排序呗group_concat内部排序一下,就不会顺序错乱了使用语法如下group_concat(field order by field)GROUP_CONCAT( oi.order_no ORDER BY原创 2021-12-14 23:20:17 · 1106 阅读 · 0 评论 -
mysql慢查日志分析工具 percona-toolkit
mysql慢查日志分析工具 percona-toolkitpt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。pt-query-digest是一个perl原创 2021-09-25 21:25:52 · 285 阅读 · 0 评论 -
中文排序方法
sql ORDER BY CONVERT(ss.road USING gbk), CONVERT(l.name USING gbk);数据量小的时候是没问题的,但是如果查询的数据量大,会超过sql默认排序文件大小,mysql会使用磁盘排序,进而造成sql慢如下图所示内存中文排序package com.ly.traffic.ground.saas.util.sort;import java.text.Collator;import java.util.Arrays;import jav原创 2021-08-06 11:09:46 · 301 阅读 · 0 评论 -
MySql分页优化
分页查询优化通常我们使用偏移量进行查询分页查询使用简单的 limit 子句就可以实现。limit格式如下:SELECT * FROM 表名 LIMIT [offset,] rows第一个参数指定第一个返回记录行的偏移量,注意从0开始;第二个参数指定返回记录行的最大数目;如果只给定一个参数,它表示返回最大的记录行数目;如SELECT * FROM user LIMIT 100,100 – 0sSELECT * FROM user LIMIT 1000,100 – 0.0001s原创 2021-03-31 16:49:45 · 88 阅读 · 0 评论 -
MySQL日志系统原理笔记
MySQL日志系统原理Undo logundo log意思为取消或者撤销,以撤销作为目的,返回某个状态的操作。数据库事务开始之前,会将要修改的记录存放到Undo log日志里,当事务回滚时候或者数据库崩溃时,可以利用undo log 日志,撤销未提交事务对数据库产生的影响。Undo log 产生销毁:undo log 在事务开始之前产生;在事务提交时,并不会立刻删除undo log, InnoDb会将该事务对应的undo log 放入到删除列表中,后面会通过后台线程进行回收处理。Undo lo原创 2021-01-03 20:37:07 · 221 阅读 · 0 评论 -
MySQL 事务笔记
MySQL 事务什么是MySQL事务?简单的来说,事务是一系列的操作,要么都执行要么都不执行,并不存在中间状态的一说。是一个不可分割的最小单元。事务的四个特性关系型数据库中,一个逻辑工作单元要想成为一个事物,必须满足四个特性即ACID:原子性,一致性,隔离性,持久化。这四个特性缺一不可;原子性是指任务是一个独立的操作单元,要么全都是要么全都不是;一致性事务开始之前和事务结束之后,数据库的完整性限制未被破坏;隔离性多个事务并发同时进行时,互相不干扰,每个事务都有它自己的工作空间原创 2021-01-03 19:41:30 · 114 阅读 · 0 评论 -
MySQL 体系架构
MySQL 体系架构MySQL 体系架构主要分为两部分:客户端和服务端客户端客户端连接器主要负责一些客户端的连接,针对不同的编程语言驱动提供连接服务。服务端服务层:系统管理和控制工具,连接池,SQL接口,解析器,查询优化器,缓存。连接池:负责管理客户端与服务层数据处理的连接,以及对用户执行操作权限的校验。系统管理和控制工具:负责备份安全,安全管理,集群管理服务和工具等。SQL接口:接收客户端 sql命令 ,返回用户需要的结果。如:dml,ddl,存储过程,视图,触发器等命令。解析器: 词原创 2021-01-03 19:20:22 · 196 阅读 · 0 评论 -
Mysql索引以及锁和mvvc
1 mysql为什么使用B+树作为索引结构?hash没有范围查询,hash碰撞二叉树深度太深,会呈现线性结构,IO查询时间长。平衡二叉树深度加大 io操作耗时大每块磁盘块(节点/页)保存数据量太小,浪费节点内存,不能很好的利用磁盘Io的交换特性局部性原理:当一个数据被用到时,附近的数据也通常会马上被使用。B树多路查找,解决二叉树保存数据量小的缺点,但是每个节点保存数据,每个节点的关键字保存数量就少了,树的高度就会增加,Io时间就会变长,性能就会变差。B+树采用闭合区间,非叶子节点原创 2020-05-16 23:18:41 · 408 阅读 · 0 评论 -
Linux 安装mysql
Linux安装mysql 1下载# yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm2初始化# yum info mysql-community-server3下载安装服务# yum -y install mysql-community-serv...转载 2018-11-06 01:02:54 · 110 阅读 · 0 评论 -
Windows下面MySQL读写分离配置以及说明
MySQL读写分离以“管理员身份”运行 cmd,进入mysql的bin目录安装mysql 初始化 mysqld -initialize -insecure -user=mysql安装mysql 服务 mysqld -install mysql-3307原创 2018-10-05 01:17:15 · 2064 阅读 · 0 评论 -
mysql 索引
1 索引是什么?索引英文是index索引可以这么理解,相当于一本书的目录,可以用来快速查到你想看的内容,用来提高查询效率。索引也是一张表保存索引和索引的字段(主键),指向实体表。2 什么时候用到索引?当需要查询的数据两特别大的时候,想要提高查询效率。并且经常需要用到这个字段,这个字段多用于where 关键字之后,这个时候需要用到索引。一般情况下,一个table里每隔字段...原创 2018-07-14 16:59:41 · 175 阅读 · 0 评论