2016 - 2024

感恩一路有你

登录mysql怎么查看引擎 mysql mvcc解决什么问题?

浏览量:4798 时间:2023-04-19 12:14:38 作者:采采

mysql mvcc解决什么问题?

解释如下:

MySQL 的事务存储引擎不实现简单的行级锁。为了提高并发性能,它们一般同时实现多版本并发控制(MVCC)。不仅仅是MySQL,其他数据库系统如Oracle、PostgreSQL都实现了MVCC,只是实现机制不同,因为MVCC没有相同的标准。

可以认为MVCC是行级锁的变种,但很多情况下避免了锁操作,所以开销更低。大多数MVCC实现非阻塞读操作,写操作只锁定必要的行。

MVCC是通过保存某个时间点的数据快照来实现的。换句话说,无论执行多久,每个事务看到的数据都是一致的。根据事务的开始时间,所有的东西都可能在同一时间看到同一个表的不同数据。

不同存储引擎的MVCC实现是不同的,通常有乐观并发控制和悲观并发控制。

InnoDB的MVCC是通过在每行记录后保存两个隐藏列来实现的。这两列,一列保存行的创建时间,另一列保存行的到期时间(删除时间)。并且存储的不是实时值,而是系统版本号。每次启动新事务时,系统版本号都会自动递增。事务开始时的系统版本号将作为事务的版本号,用于与找到的每一行记录的版本号进行比较。

表空间和临时表空间的区别?

让 让我们先谈谈临时表的概念。顾名思义,临时表是临时的,销毁的表就用完了。数据可以存储在临时文件系统或固定磁盘文件系统中。临时表如下:

1个全局临时表

这个临时表在数据库实例启动后生效,在数据库实例销毁后失效。在MySQL中,这个临时表对应的是内存表,也就是内存引擎。

2会话级临时表

该临时表在用户成功登录系统后生效,在用户退出时失效。MySQL中的临时表是指用cr:/usr/local/mysql/data# ln-s/run/shm//usr/local/MySQL/data/tmp _ spac:/usr/local/mysql/data#ls-l | gr: 28 tmp _ space 2-/run/shm/

然后把

innodb _ temp _ data _ file _ path tmp _ spac: 200 m: auto extend

添加到中[mysqld]下面的行。

重启MySQL服务后,

MySQL select @ @ innodb _ t: tmp _ spac: 200 m: auto extend

1行一组(0.00秒)

编写一个存储过程来批量创建临时表:

分隔符$$

使用` t_girl`$$

drop procedure IF EXISTS ` sp _ create _ temporary _ table ` $ $

CREATEDEFINER`root`@`localhost `过程` sp_create_temporary_table `(

IN f_cnt INT UNSIGNED)

开始

声明i INT无符号默认值1;

当我离开时

防御命令(Defense Order)

SET @ stmt CONCAT(create temporary table tmp,I,(id int,tmp _ desc varchar(60)););

从@stmt准备S1;

执行S1;

集合I I 1;

结束WHILE

滴准备S1;

结束$$

分隔符;

现在创建10个临时表:

MySQL call sp _ create _ temporary _ table(10);

QueryOK,0行受影响(0.07秒)

如果在以前,我们只知道创建了10个临时表,但只能靠记忆或手工记录临时表的名称等信息。

现在,您可以直接从数据字典中检索相关数据。

MySQL select * from information _ _ temp _ table _ info;

- - - - - -

| TABLE _ ID | NAME | N _ COLS | SPACE | PER _ TABLE _ TABLESPACE | IS _ COMPRESSED |

- - - - --

| 56 | # SQL 1705 _ 2 _ 9 | 5 | 36 | FALSE | FALSE |

| 55 | # SQL 1705 _ 2 _ 8 | 5 | 36 | FALSE | FALSE |

| 54 | # SQL 1705 _ 2 _ 7 | 5 | 36 | FALSE | FALSE |

| 53 | # SQL 1705 _ 2 _ 6 | 5 | 36 | FALSE | FALSE |

| 52 | # SQL 1705 _ 2 _ 5 | 5 | 36 | FALSE | FALSE |

| 51 | # SQL 1705 _ 2 _ 4 | 5 | 36 | FALSE | FALSE |

| 50 | # SQL 1705 _ 2 _ 3 | 5 | 36 | FALSE | FALSE |

| 49 | # SQL 1705 _ 2 _ 2 | 5 | 36 | FALSE | FALSE |

| 48 | # SQL 1705 _ 2 _ 1 | 5 | 36 | FALSE | FALSE |

| 47 | # SQL 1705 _ 2 _ 0 | 5 | 36 | FALSE | FALSE |

- - - - - -

一组10行(0.00秒)

我 我将在这里停止功能。如果对性能感兴趣,可以找时间测试一下。

临时表 数据 系统 MySQL

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。