摘要:加锁顺序 普通select查询 获取表级锁: MDL读锁 不需要其他锁: 因为使用的是MVCC,所以不需要行锁 ps: 很多地方都说使用了MVCC就不需要加锁,实际上是不需要行锁,MDL读锁还是需要的 共享读select in share mode 首先获取表级锁: MDL写锁 再获取表级锁: 意向
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - 数据库
摘要:加锁顺序 普通select查询 获取表级锁: MDL读锁 不需要其他锁: 因为使用的是MVCC,所以不需要行锁 ps: 很多地方都说使用了MVCC就不需要加锁,实际上是不需要行锁,MDL读锁还是需要的 共享读select in share mode 首先获取表级锁: MDL写锁 再获取表级锁: 意向
阅读全文
摘要:1、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,
阅读全文
摘要:最近,同事在生产上遇到一个 MySQL 死锁的问题,于是在帮忙解决问题后,特意花了一周的时间,把 MySQL 所有的锁都整理了一遍,今天就来一起聊聊 MySQL锁。 申明:本文基于 MySQL 8.0.30 版本,InnoDB 引擎 MySQL 数据库锁设计的初衷是处理并发问题,保证数据安全。MyS
阅读全文
摘要:本文简单总结 mvcc在不加锁的情况下解决了脏读、不可重复读和快照读下的幻读问题,一定不要认为幻读完全是mvcc解决的 对当前读、快照读理解,简单点说加锁就是当前读,不加锁的就是快照读。 mvcc实现的三大要素俩个隐式字段、回滚日志、read-view 俩个隐式字段:DB_TRX_ID:记录创建这条
阅读全文
摘要:前言 在了解索引覆盖前,我们先来看下,聚集索引,非聚集索引,回表等概念. 什么是聚集索引 聚集索引是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分 主键被定义了,那么这个主键作为聚集索引 主
阅读全文
摘要:在刷leetcode534. 游戏玩法分析 III 时再解完题后发现还有另一种解法,用到的关键字是 sum over partition by 函数 # method 1 SELECT a1.player_id, a1.event_date, sum(a2.games_played) AS game
阅读全文
摘要:概述MySQL5系列最高版本号是5.7;没有MySQL 6,7系列。 MySQL 8.0+才引入regexp_replace,regexp_like,regexp_instr,regexp_substr四个函数,在低于此版本的MySQL客户端执行这四个函数,报错:FUNCTION regexp_xx
阅读全文
摘要:一.什么是存储过程 存储过程,百度百科上是这样解释的,存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。 简单的
阅读全文
摘要:命名原则 库设计原则 表设计原则 字符集选择 字段设计:类型选择,长度选择 主键 设计 索引原则 稍后进行系统的总结
阅读全文
摘要:MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB 的内部实现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。 1、InnoDB 架构 Innodb 架构图 InnoDB 的架构分为两块:内存中的结构和磁盘上的结构。Inn
阅读全文
摘要:前言 前面我们讲了MySQL数据库底层的数据结构与算法、MySQL性能优化篇一些内容。我们再来聊聊MySQL的锁与事务隔离级别,分上下两篇,本篇重点讲MySQL的行锁与事务隔离级别。 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/
阅读全文
摘要:https://blog.csdn.net/org_hjh/article/details/108654791 前言 MySQL索引底层数据结构与算法 MySQL性能优化原理-前篇 MySQL性能优化-实践篇1 上一篇 《MySQL性能优化-实践篇1》我们讲了数据库表设计的一些原则,Explain工
阅读全文
摘要:前言 MySQL索引底层数据结构与算法 MySQL性能优化原理-前篇 前两篇说完了索引底层数据结构、性能优化原理的基本概念。本篇将讲讲具体实践。对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作: 数据库表设计
阅读全文
摘要:前言 性能优化(Optimize)指的是在保证系统正确性的前提下,能够更快速响应请求的一种手段。而且有些性能问题,比如慢查询等,如果积累到一定的程度或者是遇到急速上升的并发请求之后,会导致严重的后果,轻则造成服务繁忙,重则导致应用不可用。它对我们来说就像一颗即将被引爆的定时炸弹一样,时刻威胁着我们。
阅读全文
摘要:转自:一角钱技术 https://blog.csdn.net/org_hjh/article/details/108553522 前言 在 MySQL 官方提到,改善操作性能的最佳方法 [SELECT](https://dev.mysql.com/doc/refman/5.7/en/select.h
阅读全文
摘要:前言 前面我们讲了MySQL数据库底层的数据结构与算法、MySQL性能优化篇一些内容。以及上篇讲了MySQL的行锁与事务隔离级别。本篇再重点来讲讲锁类型和加锁原理。 首先对mysql锁进行划分: 按照锁的粒度划分:行锁、表锁、页锁 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现) 还有两种思
阅读全文
摘要:首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉;且如果每个页面都经过这个过滤器,那么效率也是非常低的。 如果是要SQL注入拦截,可以在数据访问上层的业务层用方法的形式进行手动过滤还靠谱些。 或者使用SQL的参数形式进行,这个
阅读全文
摘要:简介 SQL注入就是客户端在向服务器发送请求的时候,sql命令通过表单提交或者url字符串拼接传递到后台持久层,最终达到欺骗服务器执行恶意的SQL命令; 实践 项目中如何防止sql注入呢,有以下三点: 前端表单进行参数格式控制; 后台进行参数格式化,过滤所有涉及sql的非法字符; //参考:http
阅读全文
摘要:一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特
阅读全文
|