mysql
文章平均质量分 93
我只是文章的搬运工
那个少年~
这个作者很懒,什么都没留下…
展开
-
Mysql批量插入数据,一次插入多少行数据效率更高?
mysql批量插入转载 2023-02-08 17:42:26 · 640 阅读 · 0 评论 -
扒一扒MySQL的InnoDB存储引擎
在讲之前,我先抛几个问题MYSQL的记录是怎么存储的?页内记录到底是怎么维护的?页内查询过程是怎样的?1.Page页面MYSQL管理数据库的一个单位叫Page页面,数据都是存在页面里的。那我们想要知道数据是怎么存的,就需要了解页长什么样子我们来盘点一下:页头(Page Header):存一些统计信息,记录页面的控制信息,共占56字节,包括页使用情况,页的左右兄弟页面指针(这个就是双向链表,把左右兄弟页面的指针给拿到)等虚记录:分为最大虚记录和最小虚记录。它两把这页里存储的数据的范围给转载 2021-12-15 13:55:35 · 294 阅读 · 0 评论 -
Innodb Buffer Pool的三种Page和链表
一、Innodb Buffer Pool 简介Buffer Pool 是Innodb 内存中的一块占比较大的区域,用来缓存表和索引数据。众所周知,从内存访问会比从磁盘访问快很多。为了提高数据的读取速度,Buffer Pool 会通过三种Page和链表来管理这些经常访问的数据,保证热数据不会被置换出Buffer Pool。二、三种PageBuffer Pool 是按照page大小来分配,收innodb_page_size控制Free Page (空闲页) 此page未被使用,位于Free链表Cle转载 2021-12-15 10:21:26 · 429 阅读 · 0 评论 -
数据库SQL语句优化----必看推荐
一:基础数据准备DROP TABLE IF EXISTS `tbl_user`;CREATE TABLE `tbl_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `email` varchar(20) DEFAULT NULL, `age` tinyint(...转载 2020-04-08 15:34:09 · 165 阅读 · 0 评论 -
分析下MYSQL的三大日志 - 8
Mysql 中有6中日志文件,分别是:二进制日志 - binlog 重做日志 - redo log 回滚日志 - undo log 错误日志 - error log 慢查询日志 - slow query log 查询日志 - general log 中继日志 - relay log二进制日志 binlog1.概述binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志;其主要是用来记录对mysql数据更新或潜在发生原创 2021-01-11 11:25:19 · 204 阅读 · 0 评论 -
DDL变更,你可能不知道的事 -7
前言随着业务的发展,用户对系统需求变得越来越多,这就要求系统能够快速更新迭代以满足业务需求,通常系统版本发布时,都要先执行数据库的DDL变更,包括创建表、添加字段、添加索引、修改字段属性等。在数据量不太大的情况下,执行DDL都很快,对业务基本没啥影响,但是数据量大的情况,而且我们业务做了读写分离,接入了实时数仓,这时DDL变更就是一个的难题,需要综合各方业务全盘考虑。下面就聊聊这些年我公司在里面,MySQL中的DDL执行方式的变化、大表DDL该如何选择以及DDL执行过程监控。MYSQL中的D转载 2021-01-08 15:10:39 · 1586 阅读 · 0 评论 -
为什么mysql不建议使用delete删除数据 -6
InnoDB存储架构从这张图可以看到,InnoDB存储结构主要包括两部分:逻辑存储结构和物理存储结构。逻辑上是由表空间tablespace —> 段segment或者inode —> 区Extent ——>数据页Page构成,Innodb逻辑管理单位是segment,空间分配的最小单位是extent,每个segment都会从表空间FREE_PAGE中分配32个page,当这32个page不够用时,会按照以下原则进行扩展:如果当前小于1个extent,则扩展到1个extent;.转载 2021-01-08 11:10:26 · 785 阅读 · 4 评论 -
MySQL索引凭什么让查询效率提高这么多?-5
我相信大家在数据库优化的时候都会说到索引,我也不例外,大家也基本上能对数据结构的优化回答个一二三,以及页缓存之类的都能扯上几句,但是有一次阿里P9的一个面试问我:你能从计算机层面开始说一下一个索引数据加载的流程么?(就是想让我聊IO)Mysql的索引本质上是一种数据结构让我们先了解一下计算机的数据加载磁盘IO和预读:先说一下磁盘IO,磁盘读取数据靠的是机械运动,每一次读取数据都需要寻道,寻点,拷贝到内存三步操作。寻道时间是磁臂移动到指定磁道所需要的时间,一般在5ms以下;寻点是从转载 2021-01-06 16:45:38 · 168 阅读 · 0 评论 -
数据库调优-3
面试官一问到数据库调优的,除了加索引大家还知道别的么?或者索引相关的点你全部都知道么?聚簇索引,非聚簇索引,普通索引,唯一索引,change buffer,表锁、行锁、间隙锁以及行锁,还有索引为啥会选择错误?这些大家知道嘛?排除缓存干扰因为在mysql8.0之前我们的数据库是存在缓存这样的情况,因为存在缓存,大多时候sql怎么执行都是很快的,当然第一次其实不快,只是没有注意到。以至于上线后因为缓存经常失效,导致rt(response time)时高时低后面发现是缓存的问题,我们在执行sql的转载 2021-01-06 10:32:04 · 164 阅读 · 0 评论 -
数据库索引-2
前言写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢?以下这个面试场景,不知道大家熟悉不熟悉:面试官:数据库有几千万的数据,查询又很慢我们怎么办?面试者:加索引。面试官:那索引有哪些数据类型?索引是怎么样的一种结构?哪些字段又适合索引呢?B+的优点?聚合索引和非聚合索引的区别?为什么说索引会降低插入、删除、修改等维护任务的速度?……..正文索引有哪些数据结构Hash,BTree哈转载 2021-01-05 15:23:04 · 208 阅读 · 0 评论 -
数据库基础知识-1
正文你知道mysql的基本架构吗?画出这个示意图我们按照顺序了解下,连接器是什么?我们要进行查询,第一步就是先去链接数据库,那这个时候就是连接器跟我们对接。他负责跟客户端建立链接,获取权限,维持和管理链接。链接的时候会经过TCP握手,然后身份验证,然后我们在输入用户名密码就好了。验证ok之后,我们就连上了这个mysql服务了。但是这个时候我们处于空闲状态。怎么查看空闲链接列表?show processlist 其中Command列显示为sleep的这一行,就表示现在系统里面有一个空.转载 2021-01-05 13:52:38 · 280 阅读 · 0 评论 -
mysql随记—数据类型与存储
数据类型存储哪些类型的数据更小的通常更好一般情况下,应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘,内存和cpu缓存,并且处理时需要的cpu周期也更少。如果无法确定哪中类型最好,就选择你认为不会超过范围的最小类型简单就好简单的数据类型操作需要更少的cpu周期尽量避免NULL通常情况下最好指定列为not null,除非真的需要存储null。查询中包含null的列,对mysql来说优化更难,因为可为null的列使得索引,索引统计和值比较都更复原创 2020-07-23 16:31:26 · 199 阅读 · 0 评论 -
事务与MVCC-4
1.mysql可以理解分为三层1:客户端 (连接安全,权限认证等等) 2:mysql核心层(优化与执行) 3:存储引擎2.事务1.读未提交2.读已提交3.可重复读 mysql的默认事务 InnoDB通过mvcc(多版本并发控制)解决幻读的产生4.可串行化3.innodb处理死锁的方式是:将持有最少行级排他锁的事务进行回滚4.事务日志事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改转载 2020-07-21 17:38:54 · 158 阅读 · 0 评论