博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql_innodb引擎
阅读量:7114 次
发布时间:2019-06-28

本文共 5330 字,大约阅读时间需要 17 分钟。

innodb概括

1、Innodb是一种事务性存储引擎2、完全支持事务的ACID特性3、实现事务特性的原理:    使用Redo Log和Undo Log,Undo Log用于帮助未提交事务进行回滚,Redo Log记录    已经提交的事务,Undo Log会随机读写,而Redo Log基本是顺序4、Innodb支持的是行级锁,在进行写操作时需要的资源更少,支持的并发更多5、行级锁是由存储引擎层实现的6、锁:    锁的主要租用是管理共享资源的并发访问    锁用于实现事务的隔离性    共享锁(读锁)    独占锁(写锁)    锁的粒度:根据粒度分为表级锁,行级锁,粒度越大,并发就越小7、阻塞和死锁:    阻塞:一个事务中的锁需要等待另一个事务中的锁释放,形成的是阻塞    死锁:两个或两个以上的事务在执行中相互占用了对方的资源8、Innodb状态检查:    show engine innodb status;--------------------- 原文:https://blog.csdn.net/qq_28893679/article/details/78283102

  

查看当前支持的引擎

mariadb> show engines;+--------------------+---------+----------------------------------------------------------------------------+--------------+-----+------------+| Engine             | Support | Comment                                                                    | Transactions | XA  | Savepoints |+--------------------+---------+----------------------------------------------------------------------------+--------------+-----+------------+| CSV                | YES     | CSV storage engine                                                         | NO           | NO  | NO         || MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO  | NO         || MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO  | NO         || BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO  | NO         || MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO  | NO         || InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES | YES        || ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO  | NO         || FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO  | YES        || PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO  | NO         || Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO  | NO         |+--------------------+---------+----------------------------------------------------------------------------+--------------+-----+------------+10 rows in set#最常用的是innodb和MyISAM#可见,默认引擎是innodb

  

查看表引擎

引擎是表级别的,在创建表的时候,可以设定engine=innodb或者其他引擎。如果不设定,就按服务的默认引擎来。

mariadb> show create table history;+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table   | Create Table                                                                                                                                                                                                                                                         |+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| history | CREATE TABLE `history` (  `itemid` bigint(20) unsigned NOT NULL,  `clock` int(11) NOT NULL DEFAULT '0',  `value` double(16,4) NOT NULL DEFAULT '0.0000',  `ns` int(11) NOT NULL DEFAULT '0',  KEY `history_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 |+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set

  

innodb支持事务

从下面的数据中可以发现,表使用innodb引擎比使用mysiam引擎,数据量要大得多。innodb支持事务,mysiam不支持事务。

mysql> use config;Database changedmysql> create table size_test engine=myisam as select * from SvrConfig;Query OK, 672 rows affected (0.01 sec)Records: 672  Duplicates: 0  Warnings: 0mysql> use information_schema Database changedmysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB')as data from TABLES where table_schema='config' and table_name='size_test';+--------+| data   |+--------+| 0.13MB |+--------+1 row in set (0.00 sec)mysql> alter table config.size_test engine=innodb;Query OK, 672 rows affected (0.06 sec)Records: 672  Duplicates: 0  Warnings: 0mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB')as data from TABLES where table_schema='config' and table_name='size_test';+--------+| data   |+--------+| 0.20MB |+--------+1 row in set (0.00 sec)

 

innodb存储性能  

innodb是高性能的存储引擎,是企业核心数据库的首先,很多大型企业的mysql采用innodb,并在innodb表中存储超过1TB的数据,并发写操作超过800次/s。

innodb支持行级锁

 行级锁分为共享锁和排它锁

共享锁

又叫读锁,加上共享锁之后,事务对行只能进行读操作而不能写操作。

事务结束则锁释放,未释放前不能再加其他锁。

其他事务要操作,就要共享这把锁,然后也只能进行读操作。

SELECT `id` FROM  table WHERE id in(1,2)   LOCK IN SHARE MODE #结果集的数据都会加共享锁

  

排它锁

某个事务对某行加上锁,就只有这个事务可以写。其他事务可以读,不能写。这样就保证写入数据的一致性。

  

 

转载于:https://www.cnblogs.com/jabbok/p/10070435.html

你可能感兴趣的文章
openfire插件开发入门——过滤脏话
查看>>
谈谈Exception,什么时候抛出?什么时候接住?
查看>>
Mac虚拟机安装win7攻略 必须点赞
查看>>
ubuntu 使用源安装高版本内核 --- apt命令
查看>>
非递归实现中序遍历二叉树
查看>>
Android Eclipse 导入 AS Gradle AAR 库手册
查看>>
推荐算法
查看>>
分析,理解,优化Laravel
查看>>
说说安全狗服云的优势与不足
查看>>
pip 安装flask
查看>>
7.springboot --dubbo 了解
查看>>
HTML 教程
查看>>
一道受用终生的面试题,谁能给出最好的答案
查看>>
java 报表的计算公式
查看>>
EOF是什么?
查看>>
Java8 默认方法简介
查看>>
Ubuntu下使用LAMP
查看>>
【转】技术普及帖:你刚才在淘宝上买了一件东西
查看>>
浅谈android截屏问题
查看>>
ElasticSearch 搜索总结
查看>>