![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 72
请叫我黄同学
4年经验的java,在博客方面,是个新人,看到博客写的不好方面,多多指教,会把自己平时学的知识,分享给大家,希望可以帮助大家
展开
-
Mysql-如何进行慢SQL查询
官方慢SQl查询打开慢日志开关因为开启慢查询日志是有代价的(跟 bin log、optimizer-trace 一样),所以它默认是关闭的:show variables like 'slow_query%';除了这个开关,还有一个参数,控制执行超过多长时间的 SQL 才记录到慢日志,默认是 10 秒。除了这个开关,还有一个参数,控制执行超过多长时间的 SQL 才记录到慢日志,默认是 10 秒。show variables like '%long_query%';可以直接动态修改参数(重启原创 2022-05-01 19:10:49 · 13454 阅读 · 0 评论 -
Mysql-EXPLAIN执行计划详解
如何查看执行计划官方文档执行计划介绍我们先创建三张表。一张课程表,一张老师表,一张老师联系方式表(没有任何索引)。我们先创建三张表。一张课程表,一张老师表,一张老师联系方式表(没有任何索引)。DROP TABLEIF EXISTS course;CREATE TABLE `course` ( `cid` INT ( 3 ) DEFAULT NULL, `cname` VARCHAR ( 20 ) DEFAULT NULL, `tid` INT ( 3 ) DEFAULT NULL ) ENG原创 2022-04-30 12:33:37 · 1389 阅读 · 0 评论 -
Mysql-一条更新语句要经历那些流程
1. Mysql客户端将SQl语句传入MysqlServer层2. 将name=666的数据查找到,实际上,存储引擎去磁盘当中找到这条数据,并加载Buffer Pool当中然后将name=666所在行的数据name字段改为涛哥3. 修改以后不会将修改结果直接修改进磁盘,而是将修改进内存当中,会等待刷脏4. 记录Redo Log,记录Redo Log之后,并将这行记录状态改为prepare(准备状态),并没有commit5. 修改了好了之后,可以提交事务6. 生成操作Bin Log,并将Bin L.原创 2022-04-29 17:34:32 · 785 阅读 · 0 评论 -
Mysql-一条查询语句它到底是怎么执行的?
1. 客户端/服务器通信协议客户端和Mysql服务端建立连接2. 查询缓存(Query Cache)MySQL 内部自带了一个缓存模块。默认是关闭的。主要是因为 MySQL 自带的缓存的应用场景有限,第一个是它要求 SQL 语句必须一模一样。第二个是表里面任何一条数据发生变化的时候,这张表所有缓存都会失效。在 MySQL 5.8 中,查询缓存已经被移除了。3. 语法解析和预处理(Parser & Preprocessor)下一步我们要做什么呢?假如随便执行一个字符串 fkdljask.原创 2022-04-29 00:06:25 · 3586 阅读 · 0 评论 -
MySQL-InnoDB 锁的基本类型
路。Mysql官网对锁的介绍锁的基本模式——共享锁第一个行级别的锁就是我们在官网看到的 Shared Locks (共享锁),我们获取了一行数据的读锁以后,可以用来读取数据,所以它也叫做读锁。而且多个事务可以共享一把读锁。那怎么给一行数据加上读锁呢?我们可以用 select lock in share mode;的方式手工加上一把读锁。释放锁有两种方式,只要事务结束,锁就会自动事务,包括提交事务和结束事务。锁的基本模式——排它锁第二个行级别的锁叫做 Exclusive Locks(排它锁),它原创 2022-04-28 12:06:50 · 173 阅读 · 0 评论 -
Mysql-Buffer Pool和Redo Log详解
1. 什么是Buffer Pool?缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。2. Buffer Pool的内存淘汰策略冷热分区的LRU策略LRU链表会被拆分成为两部分,一部分为热数据,一部分为冷数据。冷数据占比 3/8,热数据5/8。数据页第一次加载进来,放在LRU链表的什么地方?放在冷数据区域的头部冷数据区域的缓存页什么时候放入热数据区域?MySQL设定了一个规则,在 innodb_old_blocks_time 参数中,默认原创 2022-04-27 11:18:04 · 871 阅读 · 1 评论 -
Mysql-详解脏读、不可重复读、幻读
Mysql的事务隔离级别Mysql有四种事务隔离级别,这四种隔离级别代表当存在多个事务并发冲突时,可能出现的脏读、不可重复读、幻读的问题。脏读大家看一下,我们有两个事务,一个是 Transaction A,一个是 Transaction B,在第一个事务里面,它首先通过一个 where id=1 的条件查询一条数据,返回 name=Ada,age=16 的这条数据。然后第二个事务呢,它同样地是去操作 id=1 的这行数据,它通过一个 update 的语句,把这行 id=1 的数据的 age 改成了原创 2022-04-25 16:16:14 · 3559 阅读 · 0 评论 -
Mysql-MVCC多版本并发控制详解
1、MVCCMVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有>读写冲突时,也能做到不加锁,非阻塞并发读。2、当前读像select lock in share mode(共享锁), select for update ; upda原创 2022-04-24 18:45:46 · 909 阅读 · 0 评论 -
MySQL-如何分库分表?一看就懂
一、为什么要分库分表如果一个网站业务快速发展,那这个网站流量也会增加,数据的压力也会随之而来,比如电商系统来说双十一大促对订单数据压力很大,Tps十几万并发量,如果传统的架构(一主多从),主库容量肯定无法满足这么高的Tps,业务越来越大,单表数据超出了数据库支持的容量,持久化磁盘IO,传统的数据库性能瓶颈,产品经理业务·必须做,改变程序,数据库刀子切分优化。数据库连接数不够需要分库,表的数据量大,优化后查询性能还是很低,需要分。二、什么是分库分表分库分表方案是对关系型数据库数据存储和访问机制的一种补充原创 2022-04-15 00:12:09 · 46024 阅读 · 9 评论 -
Mysql-什么是聚集索引和非聚集索引?
什么是聚集索引和非聚集索引?聚集索引聚集索引就是基于主键创建的索引,因为在InnoDB的引擎里面呢,一张表的数据对应的物理文件本身就是按照B+树来组织的,聚集索引就是按照每张表的逐渐来构建这样一个B+树,然后叶子节点里面存储了这个表里面的每一行数据记录,所以基于InnoDB这样一个特征。聚集索引并不仅仅是一种索引类型,还代表了一种数据的存储方式,同时意味着,每个表里面必须有一个主键,如果没有主键,InnoDB会默认选择或添加一个隐藏列,作为主键索引来存储这个表的数据行,一般情况是建议使用自增id作为主键原创 2022-04-10 23:51:52 · 3246 阅读 · 1 评论 -
B树和B+树的理解
B树和B+树的理解二叉树、AVL树、B树的概念B树是一种多路平衡查找树,为了更加形象去理解树的概念,先来看下二叉树B树和B+树的应用场景为什么用B树或B+树来做索引结构原创 2022-04-07 23:04:45 · 872 阅读 · 0 评论 -
Mysql-innoDB如何解决幻读?
innoDB如何解决幻读?1.mysql的事务隔离级别这四种隔离级别,当存在多个事务并发冲突的时候,可能会出现脏读,不可重复读,幻读的一些问题,而innoDB在可重复读隔离级别模式下解决了幻读的一个问题,2.什么是幻读幻读是指在同一个事务中,前后两次查询相同范围的时候得到的结果不一致...原创 2022-04-02 23:48:46 · 3323 阅读 · 1 评论