
Mysql
我是程序原
日常打卡
展开
-
Mysql锁的实现原理及设计
一、锁的粒度 1.行级锁: (1)所有的当前读都要加排它锁。比如:selectforupdate、update、delete。 (2)是作用在索引上(聚簇索引&二级索引)。 (3)唯一索引/非唯一索引*RC(提交读)/RR(可重复读),四种搭配情况不一样。需要注意。 2.表级锁: (1)加锁场景:lock tables、全盘扫描(加锁之后Mysql Se...原创 2020-11-23 19:10:15 · 910 阅读 · 0 评论 -
Mysql事务实现原理及设计
一、事务基本概念 事务特性:AIDC(原子性、隔离性、持久性、一致性) 并发问题:脏读:读取到未提交的数据。 不可重复读:两次读取的结果不同。 幻读:select操作得到的结果表征的数据状态无法支撑后续的业务操作。 隔离级别: 未提交读:最低隔离级别,会读取到其他事务为提交的数据。脏读 提交读:事务过程中可以读取到其他事务已提交的数据。不可重复读 ...原创 2020-11-23 18:58:58 · 315 阅读 · 0 评论 -
Mysql Innodb存储引擎内存管理
Mysql Innodb的内存管理的组成:1.Buffer Pool:预分配的内存池2.Page:Buffer Pool的最小单位3.Free List:空闲Page组成的链表4.Flush List: 脏页链表5.Pagehash表:维护内存Page和磁盘文件Page的映射关系6.LRU:内存淘汰算法(LRU链表分为LRU_new和LRU_old,new热数据占总链表的八分之五,old冷数据占八分之三,通过Midpoint标识来分割)一、Innodb页面加载流程与淘..原创 2020-11-23 18:32:19 · 343 阅读 · 0 评论 -
Mysql InnoDb数据页的组成及记录维护
一、Mysql Innodb数据页的组成,单页数据页的大小为16KB,由以下七部分组成:1.文件头:大小为38个字节。(页的位置,上一页下一页位置,checksum , LSN)2.数据页头:记录页面的控制信息。大小是56个字节,包括页的左右兄弟页面指针(双向链表),页面的空间使用情况。3.虚记录:最大虚记录和最小虚记录。4.记录堆:行记录存储区,分为有效记录和已删除记录、自由空间链表(已删除记录组成的链表)。5.未分配空间:页面未使用的存储空间。6.页目录:slot信息。页目.原创 2020-11-23 18:25:17 · 471 阅读 · 0 评论 -
Mysql group_concat报错,完美解决!
例如:执行如下sql:SELECT GROUP_CONCAT(id) AS user_ids FROM broker_company WHERE `status`=1;结果如下:789,1516,1554,1584,1634,1714,1734,1742,1758,1834,1836,2076,...,9021, //后边还有,但是只截取前1024个字符因为group_concat长度默认设置为1024,只截取结果的前1024个字符,超过部分不展示。解决方案一:只.原创 2020-11-12 16:02:24 · 1743 阅读 · 0 评论 -
Linux Crontab+mysql定时备份数据库
1.创建备份数据库存储目录cd data/dbmkdir backup #创建存储目录2.添加备份脚本vim backupdb.sh #创建脚本文件脚本内容如下:#!/bin/shdb_name="xxxxxx" #数据库名称name="$db_name-$(date +"%Y-%m-%d-%H-%M-%S")" #生成备份文件的名称/usr/local/mysql/bin/mysqldump $db_name >> /data/db/backup/$name.原创 2020-11-11 14:26:38 · 167 阅读 · 0 评论 -
Mysql中如何查看线程
show processlist 命令:显示哪些线程正在运行执行结果如下:各列的含义和用途:ID列 一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询 /*/mysqladmin kill 进程号。user列 显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。host列 显示这个语句是从哪个ip的哪个端口上发出的。用于追踪出问题语句的用户。db列 显示这个进程目前连接的是哪个数据库。command列 显示当前连接的执行的命令,.原创 2020-11-11 14:16:25 · 1164 阅读 · 0 评论 -
Mysql general_log 日志详解
开启 general log 将所有到达MySQL Server的SQL语句记录下来。一般不会开启开功能,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。相关参数一共有3:general_log、log_output、general_log_fileshow variables like 'general_log'; -- 查看日志是否开启show variables like 'log_output'; -- 看看日志输出类型 tabl..原创 2020-11-11 14:13:08 · 1168 阅读 · 0 评论 -
Mysql记录用户操作日志
我们想追踪某个数据库操作记录,如想找出是谁操作了某个表(比如谁将字段名改了)。二进制日志记录了操作记录,线程号等信息,但是却没有记录用户信息,因此需要结合init-connect来实现追踪。init-connect,在每次连接的初始化阶段,记录下这个连接的用户,和connection_id信息。操作如下: 1 1:建监控连接信息的表 2 use dba; 3 create table accesslog(`thread_id` int primary key auto_in原创 2020-11-11 14:07:22 · 1230 阅读 · 0 评论 -
解决“xxx不是内部/外部命令,也不是可执行程序,也不是批处理文件”
出现这个问题是因为环境变量中没有添加此命令的地址。解决方案:我们拿mysql举例:1.切换到mysql.exe文件所在目录;2.将mysql.exe文件所在目录添加到操作系统内的环境变量中;3.右击“我的电脑”-->属性-->高级-->环境变量;4.系统变量-->path-->将mysql.exe文件所在目录添加到操作系统内的环境变量中;5.完成保存;完美解决。。。...原创 2020-11-11 13:52:37 · 272 阅读 · 0 评论