
mysql
文章平均质量分 58
ignorewho
笑你我枉花光心计 爱竞逐镜花那美丽
展开
-
MYSQL-Innodb索引
注意项:1、不是在所有查询条件下出现的列都需要添加索引,访问表中很少一部分数据时适合使用索引2、mysql优化器选择是否使用索引是参考explain后的Rows字段,当Rows超过表中20%左右的数据时,mysql不会走索引,而是全表扫描3、mysql优化器的选择不一定是可靠的,有时需要使用force index(),强制使用索引进行查询磁盘读取:顺序读取:是指顺序地读取磁盘上的块随机读取:是指访...原创 2018-05-23 16:01:42 · 207 阅读 · 0 评论 -
innodb锁-next-key锁
前言:Next-Key Locks译称Next-Key锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±----------...原创 2019-01-13 16:13:11 · 595 阅读 · 0 评论 -
innodb锁-插入意向锁
前言:Insert Intention Locks译称插入意向锁,首先强调插入意向锁是间隙锁的一种,本文参考官方文档进行学习说明数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine...原创 2019-01-13 16:20:12 · 2534 阅读 · 4 评论 -
innodb锁-共享锁排他锁
前言:Shared and Exclusive Locks译称共享锁/排他锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±...原创 2019-01-13 16:27:05 · 747 阅读 · 1 评论 -
innodb锁-innodb表锁
innodb表锁:不像myisam表可以自动锁表,需要手动执行lock tables …read/write来进行锁表操作表锁使用:1.使用LOCK TABLES虽然可以给InnoDB加表级锁,但必须说明的是,表锁不是由InnoDB存储引擎层管理的,而是由其上一层──MySQL-Server负责的,仅当autocommit=0、innodb_table_locks=1(默认设置)时,Inn...原创 2019-01-13 16:31:50 · 542 阅读 · 0 评论 -
innodb锁-开启锁监控功能
开启锁监控功能有两种方式:一.创建innodb_lock_monitor表二.设置全局属性innodb_status_output=1&innodb_status_output_locks=1第一种方式:开启:CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;关闭:DROP TABLE innodb_lock_mon...原创 2019-01-13 16:55:05 · 1804 阅读 · 0 评论 -
innodb锁-不同索引下更新sql的加锁过程
一、根据主键更新mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> update test_user set status=1 where user_id=1;Query OK, 0 rows affected (0.00 sec)Rows matched: 1 Changed: 0 W...原创 2019-01-13 17:00:53 · 793 阅读 · 0 评论 -
innodb-非锁定一致性读
非锁定一致性读1.在RR和RC隔离级别下一致性读是innodb默认的模式,一致性读不会加任何锁,不影响其他事务来修改相关数据Consistent read is the default mode in which InnoDB processes SELECT statements in READ COMMITTED and REPEATABLE READ isolation levels....原创 2019-01-18 20:55:15 · 305 阅读 · 0 评论 -
innodb-错误处理
错误处理1.如果表空间满了,innodb会回滚整个事务If you run out of file space in a tablespace, a MySQL Table is full error occurs and InnoDB rolls back the SQL statement.2.死锁会导致innod回滚整个事务A transaction deadlock caus...原创 2019-01-18 20:58:47 · 485 阅读 · 0 评论 -
innodb-四种隔离级别
四种隔离级别1.innodb有四种标准的隔离级别:READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.默认隔离级别是REPEATABLE READInnoDB offers all four transaction isolation levels described by the SQL:1992 standard...原创 2019-01-18 21:23:43 · 1144 阅读 · 0 评论 -
innodb-自动提交、提交、回滚
自动提交、提交、回滚1.如果启用了自动提交的会话可以通过使用显式START TRANSACTION或BEGIN语句启动并使用COMMIT或ROLLBACK语句结束来执行多语句事务。A session that has autocommit enabled can perform a multiple-statement transaction by starting it with an e...原创 2019-01-18 21:32:11 · 758 阅读 · 0 评论 -
innodb-隐式提交
隐式提交1.DDL语句或者修改数据库对象的语句Data definition language (DDL) statements that define or modify database objects.例如:ALTER DATABASE … UPGRADE DATA DIRECTORY NAME, ALTER EVENT, ALTER PROCEDURE, ALTER SERVER...原创 2019-01-18 21:41:18 · 603 阅读 · 0 评论 -
innodb锁-间隙锁
前言:Gap Locks译称间隙锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±---------------------...原创 2019-01-13 16:06:56 · 1821 阅读 · 0 评论 -
innodb锁-意向锁
前言:Intention Locks译称意向锁,Insert Intention Locks译称插入意向锁,本文参考官方文档进行学习说明数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%en...原创 2019-01-13 16:01:26 · 1601 阅读 · 0 评论 -
mysql锁-innodb间隙锁死锁分析
前言:在上篇里分析了一次mysql死锁问题,后来又深入研究了下死锁的其他场景,innodb间隙锁场景下也可能会发生死锁,所以进一步巩固下间隙锁的知识gap锁定义:1.gap就是索引树中插入新记录的空隙2.相应的gap锁就是加在gap上的锁gap锁作用:防止幻读,通过间隙锁阻止特定条件的新记录的插入,后面单独就那些验证幻读现象注意:1. 只在REPEATABLE READ...原创 2019-01-07 21:40:39 · 9110 阅读 · 13 评论 -
MYSQL-B+树索引的插入删除
插入:1、当叶子页未满时:将记录插入对应的叶子页中2、当叶子页已满,索引页未满时:拆分叶子页,将中间的节点放入索引页,小于中间的节点放左边,大于等于中间的节点放右边3、当叶子页已满,索引页已满时:拆分叶子页,小于中间的节点放左边,大于等于中间的节点放右边,拆分索引页,小于中间页的记录放左边,大于中间页的记录放右边,中间节点放入上层索引页4、当叶子页兄弟子页未满,索引页已满时:B+树不会急于去拆分节...原创 2018-05-23 16:05:22 · 1410 阅读 · 0 评论 -
MYSQL-INNODB-lock
锁:innodb支持行锁和表锁,如果操作的是索引列,则对索引加行锁,如果没用索引,则使用表锁锁类型:1.Innodb存在两种标准的行级锁:共享锁(S LOCK 允许事务读取一行数据);排他锁(X LOCK 允许事务删除或更新一行数据)2.Innodb为了支持多粒度的锁机制,推出意向锁,意向锁是表级锁:意向共享锁(IS LOCK)、意向排他锁(IX LOCK)一致性非锁定操作:1.指Innodb通过...原创 2018-05-23 16:08:41 · 276 阅读 · 0 评论 -
MYSQL-体系结构和引擎
数据库实例和数据库的区别:数据库实例是应用程序,数据库是文件集合mysql数据库是单进程多线程的数据库linux下启动数据库命令:./mysql_safe &mysql由几部分组成:连接池组件、管理服务和工具组件、sql接口组件、查询分析器组件、优化器组件、缓存组件、插件式存储引擎、物理文件各种引擎的对比:1.INNODB每张表的数据都按照主键的顺序进行存放,如果没用显式地指定主键,inn...原创 2018-05-23 16:11:30 · 447 阅读 · 2 评论 -
MYSQL-四种事务隔离级别
四种隔离级别说明隔离级别脏读(Dirty Read)不可重复读(NonRepeatable Read)幻读(Phantom Read)未提交读(Read uncommitted)可能可能可能已提交读(Read committed)不可能可能可能可重复读(Repeatable read)不可能不可能可能可串行化(SERIALIZABLE)不可能不可能不可能...翻译 2018-05-23 16:13:09 · 185 阅读 · 0 评论 -
MYSQL-常见问题-执行mysql命令连接数据库报错:2002
执行mysql/bin目录下的mysql命令连接数据库报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'原因:指定目录下缺少mysql.sock文件,查看my.cnf文件,查看mysql服务端和客户端的socket配置文件路径是否正确原理:连接mysql实例有两种方式...原创 2018-06-04 13:50:40 · 6209 阅读 · 0 评论 -
MYSQL-重做日志
主要作用:1.当数据库实例或网络介质出问题,重做日志能够进行恢复,保证innodb引擎数据的完整性内部构成:1.每个innodb存储引擎至少有一个重做日志文件组(group)2.每个日志文件组下至少有两个重做日志文件,默认为ib_logfile0、ib_logfile13.可以设置多个镜像日志文件组,可存放到不同磁盘,来提高可靠性写入原理:1.重做日志先写入重做日志缓冲池2.按照一定条件写入重做日...原创 2018-06-05 14:20:25 · 552 阅读 · 0 评论 -
MYSQL-INNODB-数据存储
innodb存储类型:1.共享表空间:存储该表的数据、索引、插入缓冲等信息2.独立表空间:存储其他信息,如:每个表对应的撤销信息,系统事务信息,二次写缓冲等内部构成:1.表空间由分散的段(segment)组成,段(segment)由多个区(extent)组成,一个区(extend)由64个连续页(page)组成,每个页(page)大小为16k,即每个区为1M2.页类型:数据页、Undo页、系统页、...原创 2018-06-06 13:43:47 · 254 阅读 · 0 评论 -
MYSQL-二进制日志文件
主要作用:1.恢复,可以用来恢复数据,可以进行point_in_time的恢复2.复制,通过复制,使远程的一台mysql数据库与另一台mysql数据库进行实时同步写入原理(使用事务的情况下):1.默认情况下数据会先写入缓存,基于binlog_cache_size缓存配置2.如果缓存写满,会写入临时文件3.事务提交前,将缓存和临时文件的数据刷入二进制文件中基本配置参数:1.log_bin:配置启动二...原创 2018-06-06 13:50:02 · 541 阅读 · 0 评论 -
mysql-查询原理
mysql是如何执行查询?1.客户端将查询发送到服务器2.服务器检查查询缓存,如果找到了,就从缓存中返回结果,否则进行下一步3.服务器解析,预处理和优化查询,生成执行计划4.执行引擎调用存储引擎api执行查询5.服务器将结果返回给客户端 详解每个步骤:1.客户端将查询发送到服务器1.1.首先需要知道,客户端用一个数据包将查询发送到服务器,一旦客户端发送了查...原创 2018-10-14 21:10:37 · 1273 阅读 · 0 评论 -
mysql-mariadb安装
参考地址:https://blog.youkuaiyun.com/blueheart20/article/details/71036802转载 2018-11-24 21:05:17 · 331 阅读 · 0 评论 -
mysql锁-记一次innodb死锁分析
记一次innodb死锁分析原创 2019-01-07 21:09:46 · 1297 阅读 · 0 评论 -
innodb锁-insert导致的死锁
前言:之前分析了间隙锁以及行锁导致死锁的案例,后来我在学习插入意向锁的过程中,了解到单纯地插入操作也可能会导致死锁,所以也模拟下这种场景,以后遇到类似问题也不至于慌乱.同一条插入sql引发的死锁环境准备1.创建表:CREATE TABLE `test_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT, `name` ch...原创 2019-01-18 21:59:25 · 1707 阅读 · 1 评论