InnoDB

mysql死锁解决方法

£可爱£侵袭症+ 提交于 2020-11-11 01:55:12
SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'wonguser' ORDER BY TIME desc; kill 740097562 --id; mysql innodb死锁解决方法 来源: oschina 链接: https://my.oschina.net/u/1590027/blog/3028796

mysql查看死锁和解除锁

眉间皱痕 提交于 2020-11-10 13:21:53
mysql查看死锁和解除锁 GavinYCF 2018-02-28 14:47:34 100536 收藏 32 分类专栏: mysql 解除正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist 3.杀死进程id(就是上面命令的id列) kill id 第二种: 1.查看下在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; 2.杀死进程id(就是上面命令的trx_mysql_thread_id列) kill 线程ID 例子: 查出死锁进程:SHOW PROCESSLIST 杀掉进程 KILL 420821; 其它关于查看死锁的命令: 1:查看当前的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; 2:查看当前锁定的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 3:查看当前等锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 来源: oschina 链接: https://my

京东大佬,传统三年,2个月终拿到0ffer 中间经历了什么?

此生再无相见时 提交于 2020-11-10 13:20:52
点赞关注,不会迷路! 前言 今天为大家分享一位来自京东大佬的面试历程,从传统企业工作三年,历时2个月的时间,终于跳槽到了京东,拿到大厂offer的故事。 学习笔记放文章末尾 ! 京东一面 1.线程池用过哪些,线程池有哪些参数,然后问我几个常用线程池的用法和实际场景问 题。 2.集合框架的知识,hashmap,ArrayList,LinkedList源码相关知识,基本整个介绍了 一遍,与hastable,concurrenthashmap相互的关联和区别 3.说几个垃圾回收器,cms回收器有哪几个过程,停顿几次,会不会产生内存碎片。老 年代产生内存碎片会有什么问题。 4.讲讲快速排序,分析一下时间复杂度? 5.双亲委派模型介绍一下 6.java中同步、volatile关键字 7.jvm内存分区,为什么要有新生代和老年代 8.有做个VM内存优化吗? 9.数据库索引主键和唯一索引有什么区别 10.聚集索引和非聚集索引的区别? 11.MySQL存储引擎innoDB和MylSAM的区别? 12. innoDB的B+树索引叶子节点的Data域存储的是什么?MylSAM的B+树索引叶子节 点的Data域存储的是主键还是物理地址? 京东二面 1.MySQL innodb的b+树索引,主键索引,聚簇索引有什么区别。 2.数据库四大特性 3.事务的四大隔离级别 4.jvm场景问题

再见,MySQL!

与世无争的帅哥 提交于 2020-11-10 06:42:41
MySQL 作为主流的数据库,是各大厂面试官百问不厌的知识点,但是需要了解到什么程度呢?仅仅停留在 建库、创表、增删查改等基本操作的水平可不够。在面试后端开发的时候,一连几个问题,简直会被问到一脸懵逼。 MySQL 语句怎么优化?分库,分表都适合哪些场景?讲讲 InnoDB 如何使用 B+ 树存储的? 一般来说,准备 MySQL 面试 ,无非要从这几块进行准备: 查询、存储、事务、锁和性能调优 。不少朋友苦于搜集资料耗时耗力,很难 cover 住面试官的考核角度。为了能让大家在准备面试时少走弯路,这里特别推荐一个限时福利——开课吧历时三个月打造的 MySQL 实战训练营 内容对本公众号免费开放 5 天。 本次训练营的讲师都源于国内知名互联网公司,花费了近三个月的时间,调研精选各大厂 MySQL 面试题的主流考点,经过多次迭代,最终形成了这套课程内容来帮助正在求职的同学们。听下来,你可以: 收获完整的 MySQL 学习路径 针对实际场景分析数据库问题,进行性能调优 吸收业界专家的经验分享,加速 MySQL 技能进阶 加深 MySQL 底层和核心技术的理解 轻松应对面试中 MySQL 问题 导师将结合多年从事推荐系统、搜索引擎、大数据开发等业务经验,从工作中的应用场景出发,引入相关概念和原理剖析,然后分析各种方案的利弊,最后总结和答疑。训练营主要分为三大部分: 索引原理以及优化

What's New In MySQL 8.0(MySQL 8.0 新特性)

天大地大妈咪最大 提交于 2020-11-10 01:55:47
由于8.0内有很多C++11特性。需要gcc4.8版本以上。Rhel6系列默认gcc是4.7。在安装gcc6.1之后仍然检查不过。 原因可能是6.1版本不一定高于4.7,暂不讨论。鉴于升级gcc耗时较长,与测试目的不符。暂用官方rpm包安装。以便达到快速测试目的。 以下新功能介绍中,跟日常工作强相关大都经过测试。时间有限,未能面面俱到,有兴趣自行测试。 以下大部分来源自 https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html 。其中部分以此引申出来。测试版本为MySQL8.0.11 GA版。 水平有限,有问题多多指教。qq 475982055 一 MySQL 8.0发行说明及特性 Ⅰ 安全以及账户管理方面 认证加密插件变更 除了sha256_password认证插件。可用一种新的caching_sha2_password认证插件。后者可以使用缓存解决连接时的延时问题。 它还支持更多的连接协议,并且不需要与基于RSA密钥对的密码交换功能的OpenSSL进行链接。 对比可以看出。MySQL8.0中默认新建用户使用caching_sha2_password,而不是原生的加密策略。这样客户端使用原有方式连接就会出现问题。 Windows nivicat客户端连接问题 Linux 客户端下连接

【MySQL】mysql中的锁机制

馋奶兔 提交于 2020-11-09 12:50:39
一、分类 MySQL的锁机制不同的存储引擎支持不同的锁机制,分为表级锁、 行级锁、 页面锁。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁: 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 二、表级锁 MySQL的表级锁有两种模式: 表共享读锁(Table Read Lock) 和 表独占写锁(Table Write Lock) 。 对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作。 MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK

大数据量时Mysql的优化

强颜欢笑 提交于 2020-11-09 05:12:46
(转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。 虽然关系型数据库在海量数据中逊色于NoSQL数据库,但是如果你操作正确,它的性能还是会满足你的需求的。针对数据的不同操作,其优化方向也是不尽相同。对于数据移植,查询和插入等操作,可以从不同的方向去考虑。而在优化的时候还需要考虑其他相关操作是否会产生影响。就比如你可以通过创建索引提高查询性能,但是这会导致插入数据的时候因为要建立更新索引导致插入性能降低,你是否可以接受这一降低那。所以,对数据库的优化是要考虑多个方向,寻找一个折衷的最佳方案。 一:查询优化 1:创建索引。 最简单也是最常用的优化就是查询。因为对于CRUD操作,read操作是占据了绝大部分的比例,所以read的性能基本上决定了应用的性能。对于查询性能最常用的就是创建索引。经过测试,2000万条记录,每条记录200字节两列varchar类型的

玩转Mysql系列

牧云@^-^@ 提交于 2020-11-09 03:27:35
Mysql系列的目标是: 通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 这是Mysql系列第22篇。 背景 使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有: 按照id查询唯一一条记录 按照某些个字段查询对应的记录 查找某个范围的所有记录(between and) 对查询出来的结果排序 mysql的索引的目的是使上面的各种查询能够更快。 预备知识 什么是索引? 上一篇中有详细的介绍,可以过去看一下: 什么是索引? 索引的本质: 通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。 磁盘中数据的存取 以机械硬盘来说,先了解几个概念。 扇区 :磁盘存储的最小单位,扇区一般大小为512Byte。 磁盘块 :文件系统与磁盘交互的的最小单位(计算机系统读写磁盘的最小单位),一个磁盘块由连续几个(2^n)扇区组成,块一般大小一般为4KB。 磁盘读取数据 :磁盘读取数据靠的是机械运动,每次读取数据花费的时间可以分为 寻道时间、旋转延迟、传输时间 三个部分,寻道时间指的是磁臂移动到指定磁道所需要的时间,主流磁盘一般在5ms以下;旋转延迟就是我们经常听说的磁盘转速

重要,知识点:InnoDB的插入缓冲

早过忘川 提交于 2020-11-09 03:27:12
世界上最快的捷径,就是脚踏实地,本文已收录【 架构技术专栏 】关注这个喜欢分享的地方。 InnoDB引擎有几个重点特性,为其带来了更好的性能和可靠性: 插入缓冲(Insert Buffer) 两次写(Double Write) 自适应哈希索引(Adaptive Hash Index) 异步IO(Async IO) 刷新邻接页(Flush Neighbor Page) 今天我们的主题就是 插入缓冲(Insert Buffer) ,由于InnoDB引擎底层数据存储结构式B+树,而对于索引我们又有聚集索引和非聚集索引。 在进行数据插入时必然会引起索引的变化,聚集索引不必说,一般都是递增有序的。而非聚集索引就不一定是什么数据了,其离散性导致了在插入时结构的不断变化,从而导致插入性能降低。 所以为了解决非聚集索引插入性能的问题,InnoDB引擎 创造了Insert Buffer。 Insert Buffer 的存储 看到上图,可能大家会认为Insert Buffer 就是InnoDB 缓冲池的一个组成部分。 **重点:**其实对也不对,InnoDB 缓冲池确实包含了Insert Buffer的信息,但Insert Buffer 其实和数据页一样,也是物理存在的(以B+树的形式存在共享表空间中)。 Insert Buffer 的作用 先说几个点: 一张表只能有一个主键索引

玩转Mysql系列

半城伤御伤魂 提交于 2020-11-08 18:58:19
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。 欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。 这是Mysql系列第23篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 关于索引的,可以先看一下前2篇文章: 什么是索引? mysql索引原理详解 本文主要介绍mysql中索引常见的管理操作。 索引分类 分为 聚集索引 和 非聚集索引 。 聚集索引 每个表有且一定会有一个聚集索引,整个表的数据存储在聚集索引中,mysql索引是采用B+树结构保存在文件中,叶子节点存储主键的值以及对应记录的数据,非叶子节点不存储记录的数据,只存储主键的值。当表中未指定主键时,mysql内部会自动给每条记录添加一个隐藏的rowid字段(默认4个字节)作为主键,用rowid构建聚集索引。 聚集索引在mysql中又叫 主键索引 。 非聚集索引(辅助索引) 也是b+树结构,不过有一点和聚集索引不同,非聚集索引叶子节点存储字段(索引字段)的值以及对应记录主键的值,其他节点只存储字段的值(索引字段)。 每个表可以有多个非聚集索引。 mysql中非聚集索引分为 单列索引 即一个索引只包含一个列。 多列索引(又称复合索引) 即一个索引包含多个列。 唯一索引 索引列的值必须唯一,允许有一个空值。