![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 83
Chen_leilei
头发掉光,技术见长
展开
-
我sql优化的招数
mysql优化原创 2023-01-10 10:10:16 · 229 阅读 · 0 评论 -
mysql存储原理(3)InnoDB存储模型
我们在查询得时候,会先通过索引定位到对应得数据页,然后检测数据页是否在缓冲池中,如果在就直接返回,如果不在就去聚簇索引中通过磁盘IO读取对应得数据页并放入缓冲池,一个数据页会包含多个数据行,缓存池通过LRU算法对数据页进行管理,最频繁使用得数据页排在列表前面,不进场使用得排在队尾,当缓冲池满了的时候会淘汰队尾的数据页,从磁盘鑫读取到的数据页不会放在队列的头部,而是放在中间,这个中间位置可以通过参数进行修改。InnoDB在更新数据库的时候使用的是WAL技术,这个日志就是redolog用来保证数据库宕机后可原创 2022-01-17 16:21:22 · 652 阅读 · 0 评论 -
Mysql存储原理(2)
今天我们来讲一下排序mysql的排序方式是,我们先根据条件查询出结果集,然后在内存中对结果集进行排序,如果结果集数量比较大,还需要将结果集写入到多个文件中去,然后单独进行排序,然后在文件间进行归并排序,排序完成后在进行 limit 操作。CREATE TABLE `person` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, `age` int(11) NOT N原创 2022-01-17 14:37:29 · 641 阅读 · 0 评论 -
Mysql之存储原理(1)
首先我们知道,对于Mysql而言,数据是存储在文件中的,为了能够快速的定位我们想要的数据,我们就需要一种数据结构,就是索引。一般操作系统以4kb为一个数据页读取数据,而mysql是以16kb作为一个数据块,已经读取过的数据会放在缓存中,如果多次读取的数据在同一个数据块上,只需要一次磁盘IO就可以了,在mysql中我们用N叉树来代替二叉树的原因是因为在极端的条件下,二叉树会变成链表的结构,所以我们使用N叉树,这个N一般为1200,当树高为4的时候可以存储亿级别的数据,mysql用到的b+树,一般非叶子节点构建原创 2022-01-17 10:31:47 · 3000 阅读 · 0 评论 -
Mysql查看慢查询日志
我们在工作中经常会遇到执行很慢的sql语句,今天我们来看一下慢查询日志查看通用日志show variables like ‘%general%’;默认通用日志是关闭的,开启通用日志查询: set global general_log=on;关闭通用日志查询: set global general_log=off;查看当前慢查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log原创 2021-12-16 09:44:25 · 15449 阅读 · 2 评论 -
mysql索引优化之我见
索引 索引是一种数据结构,数据库优化的常用工具之一。索引的类型1.主键索引 PRIMARY key 不能为空2.唯一索引 unique 可以为空3.普通索引 index4.组合索引 index 一个索引包含多个列 常用于回表操作5.全文索引 fullText索引的设计原则1.适合索引的列是出现在where子句中的列,或者连接子句中指定的列2.基类较小的列不建议使用索引3.使用短索引,如果对长字符串进行索引应该指定一个前缀长度4.不要过度使用索引,因为这样会导致更新...原创 2021-11-25 21:25:32 · 640 阅读 · 0 评论 -
win10进行mysql 原地升级到5.7版本
将mysql文件夹进行备份以管理员身份运行命令窗口进入服务端数据目录:利用cd命令进入mysql\bin目录中停止数据库服务: net stop mysql;删除当前版本数据库 mysqld --remove mysql将数据库5.7版本的数据库复制到mysql中将1步骤中的文件夹中的my.ini 和Data目录复制到新的ServiceDatabase中修改my.ini文件找到table_cache=256 修改成 table_open_cac...原创 2021-01-21 15:01:34 · 446 阅读 · 0 评论 -
Mysql学习(调优篇)
影响mysql的性能因素 业务需求对Mysql的影响 存储定位对Mysql的影响 系统各种配置和规则数据 活跃用户的基本信息数据,个性化定制信息数据 准实时的统计信息数据 其他一些访问频繁但变更较少的数据 二进制多媒体数据 流水队列数据 超大文本数据 不适合放进mysql的数据 需要放进缓存的数据Sche...原创 2021-01-13 11:48:38 · 122 阅读 · 0 评论 -
Mysql学习(锁篇)
数据库的乐观锁和悲观锁?MySQL 中有哪几种锁,列举一下?MySQL中InnoDB引擎的行锁是怎么实现的?MySQL 间隙锁有没有了解,死锁有没有了解,写一段会造成死锁的 sql 语句,死锁发生了如何解决,MySQL 有没有提供什么机制去解决死锁锁,是计算机协调多个进程或者线程并发访问某一资源的机制在数据库中,除了传统的计算资源的争用外,数据也是一种供需要用户共享的资源。...原创 2021-01-12 10:54:30 · 157 阅读 · 0 评论 -
Mysql学习(事务篇)
事务的隔离级别有哪些?MySQL的默认隔离级别是什么? 什么是幻读,脏读,不可重复读呢? MySQL事务的四大特性以及实现原理 MVCC熟悉吗,它的底层原理?MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你需要删除人员的基本资料。也要删除和该人员相关的信息,如信箱,文章等等,这些数据库操作语句就构成一个事务。ACID 事务基本要素A(Atomicity) 原子性,整个事务中的所有操作,要么全部完成,要么全部不完成,事务在执行过程中发生错误,会原创 2021-01-11 16:33:56 · 117 阅读 · 0 评论 -
Mysql学习(索引篇)
说说你对 MySQL 索引的理解?数据库索引的原理,为什么要用 B+树,为什么不用二叉树?聚集索引与非聚集索引的区别?InnoDB引擎中的索引策略,了解过吗?创建索引的方式有哪些?聚簇索引/非聚簇索引,mysql索引底层实现,为什么不用B-tree,为什么不用hash,叶子结点存放的是数据还是指向数据的内存地址,使用索引需要注意的几个地方?mysql官方对索引的定义为:索引是帮助Mysql搞笑获取数据的数据结构,所以说索引的本质是:数据结构索引的目的在于提高查询效率,可以类比字.原创 2021-01-11 09:48:52 · 130 阅读 · 0 评论 -
Mysql学习(基础篇)
一.一条SQL语句在MySQL中如何执行的?客户端请求 --->连接器(验证身份,给予权限)-->查询缓存(存在则直接返回),不存在则执行后续操作 ---> 分析器(对sql进行词法分析和语句分析操作) --->优化器(主要对执行的sql优化选择最优的执行方法)--->执行器(执行时会看用户是否有执行权限,有才去使用这个引擎提供的接口)二.说说Mysql有哪些存储引擎,都有哪些区别?一个数据库中多个表可以使用不同引擎以班组各种性能和实际需求-- 查看支持的存储引原创 2021-01-08 09:24:49 · 231 阅读 · 0 评论 -
mycat查表报错 ERROR 1184 (HY000): Invalid DataSource:0解决方法
话不多说,记录一下。当我使用mycat用户想查看自己配置的主从复制的表的时候,show TESTDB;发现特别卡顿;当时并没有怀疑有什么问题,以为是网络卡的缘故。当我进行 select语句查询的时候就报错了ERROR 1184 (HY000): Invalid DataSource:0其实原因就是因为你没有给你mycat这个用户远程访问的权限<writeHost host="db1" url="192.168.0.3:3306" user="root" password="原创 2020-11-08 22:41:39 · 7354 阅读 · 18 评论 -
记录如何使用binlog日志,做个简单的数据恢复
作为开发,你最怕的是什么?是不是误删库,跑吧也不是,不跑吧,咱们也赔不起。为了防止遇见这种事情发生,那么我学了一个上午,终于知道如何利用binlog恢复误删数据了。不过,为了更加安全,我们也要及时做数据库备份。大家可以看我另一篇博客https://blog.csdn.net/Chen_leilei/article/details/107105907这里面告诉了大家最最简单的定时备份数据库!下面正式开始!1.首先我们要看一下我们的mysql数据库是否开启了binlog,在数据库里面输入:sh原创 2020-07-31 15:09:27 · 567 阅读 · 0 评论 -
最最最简单的定时备份数据库脚本
#!/bin/bashbaseDir="/mnt/data_dump/";cd "$baseDir";echo "开始备份数据库";echo `mysqldump -h127.0.0.1 -u用户名 -p密码 --default-character-set=utf8 数据库名 > database_dump_$(date +%Y%m%d_%H%M%S).sql`;echo "备份数据完成";oldDate=`date --date='8 day ago' +%Y%m%d`;#删除当.原创 2020-07-03 15:28:27 · 454 阅读 · 0 评论 -
mysql中update join相关操作
最近,带我的大哥让我批量更新一个表里面的字段。因为曾经我使用过insert into select ... 猜想update 也应该有这样的操作,于是上网上搜了一下,很明显失败了,执行报错,估计人家是sqlserver, 于是仿照网上的sqlserver 写了一个 mysql版本的update table1 s join table2k on (s.关联字段=k.关联字段) set s.要改...原创 2019-04-28 15:08:34 · 4840 阅读 · 3 评论 -
mysql从一张表查询出一个字段的数据不在另一张表的另一个字段里方法
先说一个前提哈,前提是关联字段,有一个表里有所有的数据。另一个表里只有其中的某些数据。工作中遇见一个问题,两张数据量大约在几千万数据量吧,并且两张表的结构还不一样,但是其中有一个字段可以关联,通常我们会采取not in的方式来查询,比如 select a.uid from a where a.uid not in (select b.id from b)。但数据量大就等着吧,好慢好慢,,,终于...原创 2019-04-26 11:41:13 · 6680 阅读 · 0 评论