前面我们讲了MySQL数据库底层的数据结构与算法、MySQL性能优化篇一些内容。我们再来聊聊MySQL的锁与事务隔离级别,分上下两篇,本篇重点讲MySQL的行锁与事务隔离级别。锁定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问
......
407
0
0
2022-10-05
将数据库字符集从utf8修改为utf8mb4和修改库的默认字符集alter database test default character set utf8mb4 COLLATE utf8mb4_unicode_ci;
修改表的默认字符集ALTER TABLE test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8m
......
878
0
0
2022-09-25
在mysql中执行show create table <tablename>指令,可以看到一张表的建表语句,example如下:CREATE TABLE `table1` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`field1` text COLLATE utf8
......
523
0
0
2022-09-24
背景在我们的日常开发中,我们一定会接触到的一种数据就是分层数据。哪些是分层数据呢?业务组织结构图,内容管理类别,RBAC权限管理,产品类别等等,这些都是分层数据,以下是一个电子商店的产品类别层次结构:在本文中,我们将研究在 MySQL 中处理分层数据的两种模型,从传统的邻接表模型开始。邻接表模型通常,上面显示的示例类别将存储在如下表中(我把 CREATE 和
......
386
0
0
2022-09-05
服务器参数配置:1核2G1M系统:Ubuntu 20.04 server 64bit安装 MySQL参考:ubuntu如何安装mysql8.0.19 文章中的安装部分。依次执行以下命令:sudo apt-get install mysql-server -y
sudo apt install mysql-client -y
sudo apt in
......
453
0
0
2022-09-04
背景生产环境使用的宝塔面板,一般会使用自带的数据库备份功能,那个功能不能跳过一些不需要备份的表,数据量大起来之后,备份耗时增加影响业务。脚本#!/usr/bin/bash
#用户名
USER=test
#密码
PASSWORD='test'
#数据库名
DATABASE=test
#mysqldump
# --ignore-table : 备
......
614
0
0
2022-08-27
对于任何一位使用mysql的开发人员来说,稍微有点深入的应该都会接触到这两个名词。区别:1.redo log只有innodb引擎才有。2.redo log关键点是先写日志,在写磁盘,等到某个不忙的时间段再统一写入磁盘。并且有大小如果超过了就暂停写入日志并擦除一些记录,但在擦除之前会写入文件,这样即使服务器异常重启,也不会丢失提交的记录。而binlog是一种日
......
391
0
0
2022-08-23
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,
......
451
0
0
2022-07-20
一、performance_schema的介绍performance:性能schema:图(表)示,以大纲或模型的形式表示计划或理论。MySQL的performance schema 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况。特点 1、提供了一种在数据库运行时实时检查server的内部执行情况的方法。perfor
......
467
0
0
2022-07-20
简介show processlist显示这台MySQL正在连接的用户:mysql> show processlist;
+----+------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host | db |
......
461
0
0
2022-07-20
一、分区表的应用场景1、为什么是用分区表?表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他均是历史数据,分区表是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。2、使用分区表的好处(1)数据更容易维护 批量删除大量数据可以使用清除整个分区的方式 对一个独立
......
404
0
0
2022-07-20
用show profile查询工具指定具体的typeshow profile在mysql5.7之后过时show profile命令用于跟踪执行过的sql语句的资源消耗信息,可以帮助查看sql语句的执行情况,可以在做性能分析或者问题诊断的时候作为参考。在MySQL5.7中, show profile命令已经开始不推荐使用,MySQL使用performance_
......
420
0
0
2022-07-20
一、索引基本知识1、索引的优点1、减少了服务器需要扫描的数据量2、帮助服务器避免排序和临时表例子:select * from emp orde by sal desc;那么执行顺序:所以有索引的话就不会创建零时表,临时表中,磁盘零时表比内存临时表更加的消耗性能。3、将随机IO变成顺序IO如何理解随机IO与顺序IO呢?如图:这是一个磁盘,B是几何扇区(仅做标记
......
407
0
0
2022-07-20
一、查询慢的原因1、网络(1)网络丢包,重传这个比较容易理解。当SQL 从客户端发送到数据库,执行完毕,数据库将结果返回给客户端,这个将数据返回给客户端的过程本质是网络包传输。因为链路的不稳定性,如果在传输过程中发送丢包会导致数据包重传,进而增加数据传输时间。从客户端来看,就会觉得SQL 执行慢。(2)网卡满 比如大字段如果公司业务体量很大,比如平时每天30
......
354
0
0
2022-07-20
先说一下为什么会有主库延迟这个问题。随着互联网业务数量量越来越大,伴随着我们数据库的DB能力也要随之增强。当下最贴合生产数据库模式的应该也就是主从库+读写分离+缓存中间件等一系列的解决方案。我们这里只讲一下MySQL的本身问题。
如上图所示,A是主库,B是从库。提到高可用问题,肯定不能A一直是主库,B一直是从库。所以就存在了主从切换的问题。下面介绍一下切换的
......
469
0
0
2022-07-06