mysql
sunny david jin
一蓑烟雨任平生
展开
-
MySQL MVCC Undo log Redo log
目录什么是MVCC?MVCC-插入MVCC-删除MVCC-修改MVCC-查询Undo logRedo log什么是MVCC?Multi Version Concurrency Control (多版本并发控制)并发访问(读或写)数据库时,对事务内正在处理的数据做多版本管理。以实现写操作堵塞的同时,依然可以进行读操作。MVCC-插入插入规则:在数据行版...转载 2020-01-05 09:03:56 · 172 阅读 · 0 评论 -
MySQL MVCC Undo log Redo log
目录什么是MVCC?MVCC-插入MVCC-删除MVCC-修改MVCC-查询Undo logRedo log什么是MVCC?Multi Version Concurrency Control (多版本并发控制)并发访问(读或写)数据库时,对事务内正在处理的数据做多版本管理。以实现写操作堵塞的同时,依然可以进行读操作。MVCC-插入插入规则:在数据行版...转载 2020-01-05 09:01:49 · 139 阅读 · 0 评论 -
MySQL的索引结构
目录索引是什么?索引的作用为什么索引的数据结构使用B+Tree?平衡二叉查找树多路平衡查找树 B-Tree多路平衡查找树加强版 B+TreeB+Tree与B-Tree的区别MySQL中B+Tree的表现形式MyISAM引擎InnoDB引擎覆盖索引联合索引最左前缀原则索引是什么?索引是对数据库表中一列或多列的值进行排序的一种结构,使用...转载 2020-01-05 09:00:38 · 117 阅读 · 0 评论 -
MySQL死锁案例
死锁案例1多线程以不同顺序对相同资源加锁导致死锁。时间会话A会话B1 BEGIN; 2 SELECT * FROM t WHERE a = 1 FOR UPDATE; BEGIN;3 SELECT * FROM t WHERE a = 2 FOR UPDATE;4 SELECT * FROM t WHERE a = 2 FO...转载 2020-01-05 08:59:21 · 105 阅读 · 0 评论 -
MySQL常用规范
一. 建表规范1.使用InnoDB引擎无特殊情况必须使用InnoDB引擎(5.5版本后默认引擎)InnoDB支持事务、行级锁、MVCC,并发性能更好,CPU及内存缓存页优化使得资源利用率更好。2.规范表、字段的命名表名、字段名,小写下划线风格,尽量做到见名知意。3.规范索引命名主键索引名为pk_表名_字段名,唯一索引名为uk_表名_字段名,普通索引为idx_表名_字段名。4...转载 2020-01-05 08:57:51 · 94 阅读 · 0 评论 -
mysql 可重复读
概念 Repeatable Read(可重复读):即:事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。实现原理(MVCC [ 多版本并发控制 ]) InnoDB在每行记录后面保存两个隐藏的列来,分别保存了这个行的创建时间和行的删除时间。这里存储的并不是实际的时间值,而是系统版本号,当数据被修改时,版本号加1 在读取事务开...原创 2020-01-05 08:50:21 · 551 阅读 · 0 评论 -
mysql的MVCC(多版本并发控制)
1 什么是MVCC MVCC全称是:Multiversion concurrency control,多版本并发控制,提供并发访问数据库时,对事务内读取的到的内存做处理,用来避免写操作堵塞读操作的并发问题。 举个例子,程序员A正在读数据库中某些内容,而程序员B正在给这些内容做修改(假设是在一个事务内修改,大概持续10s左右),A在这10s内 则可能看到一个不一...原创 2020-01-05 08:49:12 · 127 阅读 · 0 评论 -
mysql覆盖索引与回表
select id,name where name='shenjian'select id,name,sex* where name='shenjian'*多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化SQL?这些,这是今天要分享的内容。画外音:本文试验基于MySQL5.6-InnoDB。...原创 2020-01-05 08:02:45 · 2003 阅读 · 0 评论 -
回表查询的说明
你可能从来都没有听说过回表一词,但是你在实际工作中肯定用过回表。如果还没有听过回表,那我相信不管你看多少 SQL 优化的知识,都还只是停留在表面。即使你参考学习过我前面的这篇文章《MySQL 性能优化神器 Explain 使用教程》。一条SQL语句的查询过程我们先来看看什么是回表?通俗的讲就是,如果索引的列在 select 所需获得的列中(因为在 mysql 中索引是根据索引列的值进行...原创 2020-01-04 23:03:18 · 2717 阅读 · 2 评论 -
Mysql的共享锁和排他锁
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获...转载 2020-01-04 22:47:07 · 92 阅读 · 0 评论 -
MySQL的存储引擎
目录什么是引擎?MySQL的常见引擎CSV存储引擎Archive(档案)存储引擎Memory存储引擎MyISAM存储引擎InnoDB存储引擎InnoDB与MyISAM的比较什么是引擎?引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏...原创 2020-01-04 21:32:40 · 98 阅读 · 0 评论 -
MySQL批量插入大量数据方法
在MySQL数据库中,如果要插入上百万级的记录,用普通的insert into来操作非常不现实,速度慢人力成本高,推荐使用Load Data或存储过程来导入数据,我总结了一些方法分享如下,主要基于MyISAM和InnoDB引擎。InnoDB存储引擎首先创建数据表(可选),如果有了略过:> CREATE DATABASE ecommerce;> USE ecommerce...原创 2020-01-04 18:06:26 · 3535 阅读 · 0 评论 -
mysql批量插入与更新
批量插入数据insert into t1 values(a,b),(a,b).....;insert into selectINSERT INTO t VALUES (1, 20, 'a'), (2, 26, 'b'), (3, 30, 'c');– 两张表的字段要一一对应INSERT INTO t SELECT id,age,name from t_copy w...原创 2020-01-04 17:23:30 · 380 阅读 · 0 评论