InnoDB 存储引擎简介
InnoDB 核心特性
MVCC(Multi-Version Concurrency Control,多版本并发控制),事务处理,行级锁,热备份,自动故障恢复( Crash Safe Recovery)
存储引擎相关命令
查看默认存储引擎
# 查看当前数据库配置的存储引擎
mysql> SELECT @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB |
+--------------------------+
1 row in set (0.00 sec)
查看表的存储引擎
# 查看哪些表时innodb存储引擎
mysql> select TABLE_SCHEMA,TABLE_Name,ENGINE from tables where ENGINE='innodb';
# 查看哪些表时myisam存储引擎
mysql> select TABLE_SCHEMA,TABLE_Name,ENGINE from tables where ENGINE='myisam';
# 查看表信息
mysql> select * from information_schema.tables where table_name='test11'\G
# 查看指定表的存储引擎
mysql> show create table city;
# 查看列信息
mysql> select * from COLUMNS where COLUMN_NAME='name'\G
修改存储引擎
# 临时设置
mysql> set @@default_storage_engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| MyISAM |
+--------------------------+
1 row in set (0.00 sec)
# 永久修改
[root@db03 mysql]# vim /etc/my.cnf
[mysqld]
default_storage_engine=myisam
#建表时指定存储引擎
mysql> create table innodb(id int) ENGINE=innodb;
InnoDB 表空间介绍
MySQL5.5 版本以后出现共享表空间概念,表空间的管理模式的出现是为了数据库的存储更容易扩展,MySQL5.6 版本中默认的是独立表空间
共享表空间(ibdata1)
对于系统创建的表,会采用此种模式,此外还存储着临时表、事务日志等信息
存储的内容
- 系统表结构,表数据
- undo log
- InooDB 表结构,即使存储到独立表空间的数据表,也会将表结构存放一份到共享表空间
- 临时表数据
优点:
可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上)。数据和文件放在一起方便管理。
缺点:
所有的数据和索引存放到一个文件中,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。
配置共享表空间
# 将共享表空间分开存储, 配置 autoextend,自动扩展 ibdata2 文件大小
[root@db03 data]# vim /etc/my.cnf
[mysqld]
innodb_data_file_path=ibdata1:76M;tmp/ibdata2:50M:autoextend
查看共享表空间
mysql> show variables like '%path%';
+----------------------------------+----------------------------------------+
| Variable_name | Value |
+----------------------------------+----------------------------------------+
| innodb_data_file_path | ibdata1:76M;tmp/ibdata2:50M:autoextend |
独立表空间
对于用户自主创建的表,会采用此种模式,每个表由一个独立的表空间进行管理
优点:每个表都有自己独立的表空间,数据分开存储
缺点:单表空间不能过大,不能大于100G
# 独立表空间的文件存储方式
[root@db01 ~]# ll /application/mysql/data/world/
-rw-rw---- 1 mysql mysql 688128 Aug 14 16:23 city.ibd
# 命令行查看是否开启独立表空间
mysql> show variables like '%per_table%';
innodb_file_per_table=ON
企业案例(InnoDB 表结构需要存储到共享表空间)
模拟断电,数据表损坏
# 1.将db03上的数据库数据目录下的 world传到一台新数据库的数据目录下
[root@db03 data]# scp -r world 172.16.1.52:/usr/local/mysql/data/
# 2.到db02上授权目录
[root@db02 data]# chown -R mysql.mysql world/
# 3.登录数据库查看,数据已损坏
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city |
| country |
| countrylanguage |
+-----------------+
11 rows in set (0.00 sec)
mysql> select * from city;
ERROR 1146 (42S02): Table 'world.city' doesn't exist
修复数据表
# 1.找到建表语句,创建一个新表
CREATE TABLE `city_new` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
KEY `inx_name` (`Name`),
KEY `index_popu` (`Population`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1;
# 2.移除新表的表空间
mysql> alter table city_new discard tablespace;
Query OK, 0 rows affected (0.09 sec)
# 3.损坏表空间的数据文件复制给新表
[root@db02 world]# cp city.ibd city_new.ibd
[root@db02 world]# chown -R mysql.mysql city_new.ibd
# 4.新表读取表空间
mysql> alter table city_new import tablespace;
Query OK, 0 rows affected, 1 warning (0.22 sec)
# 5.运维修改数据库名
# 删除表空间
mysql> drop table city;
ERROR 1051 (42S02): Unknown table 'world.city'
# 物理删除表数据
[root@db02 world]# rm city.ibd
rm: remove regular file ‘city.ibd’? y
# 数据库改名
mysql> alter table city_new rename city;
Query OK, 0 rows affected (0.11 sec)
InnoDB 存储引擎简介的更多相关文章
- InnoDB存储引擎简介
前言: 存储引擎是数据库的核心,对于 MySQL 来说,存储引擎是以插件的形式运行的.虽然 MySQL 支持种类繁多的存储引擎,但最常用的当属 InnoDB 了,本篇文章将主要介绍 InnoDB 存储 ...
- 第 3 章 MySQL 存储引擎简介
第 3 章 MySQL 存储引擎简介 前言 3.1 MySQL 存储引擎概述 MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一.他的前身就是我们在 ...
- MySql常用两大存储引擎简介
MyISAM存储引擎简介 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件. 首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.M ...
- MySQL笔记(2)---InnoDB存储引擎
1.前言 本节记录InnoDB的相关知识点. 2.InnoDB存储引擎简介 2.1版本 MySQL5.1开始,允许用动态方式加载引擎,这样存储引擎的更新可以不受MySQL数据库版本的限制.下面是各个I ...
- MySQL性能调优与架构设计——第3章 MySQL存储引擎简介
第3章 MySQL存储引擎简介 3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所 ...
- MySQL存储引擎简介-MyISAM和InnoDB的区别
上篇文章<MySql逻辑结构简介>我们聊到了存储引擎,可以说MySQL可插拔的多元化存储引擎给我们的使用者带来了很灵活的选择. 这篇文章我们来聊一下目前主流的两种存储引擎MyISAM和In ...
- 第二课——解析mysqldump命令和mysqlbinlog命令+innodb和Myisam存储引擎简介
环境说明 mysql版本:Percona-Server-5.6.30 IP:10.7.15.167 端口:3306 安装目录:/httx/run/mysql 数据目录:/httx/run/mysql/ ...
- MySQL内核:InnoDB存储引擎 卷1
MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...
- 关于InnoDB存储引擎text和blob类型的优化
我们在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,如果单表的存储空间达到了近上百G或者大几十G,这种情况再去改变和优化就非常难了 一.简介 为了清楚大字段对性能的影响,我们有 ...
随机推荐
- 【Oracle】查询锁的相关SQL
--查看有锁的进程 select t2.username,t2.sid,t2.serial#,t2.logon_time,t2.state from v$locked_object t1,v$sess ...
- SDUST数据结构 - chap4 串
函数题: 6-1 查找子串: 裁判测试程序样例: #include <stdio.h> #define MAXS 30 char *search(char *s, char *t); vo ...
- SYSTEM_SHMCONSTR_LOGON_FAILED错误解决办法
如果你在调用WebDynpro程序时,发现st22里有如上图所示的报错信息,可以参考note:1318269所列举的方法来进行处理.大概的方法就是,通过SE80,执行任意的webdypro程序,例如& ...
- 使用Canal作为mysql的数据同步工具
一.Canal介绍 1.应用场景 在前面的统计分析功能中,我们采取了服务调用获取统计数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与 ...
- Python执行程序实可视化_heartrate
最近发现了一个Python程序执行的简单实时可视化神器,名字叫 heartrate,安装完运行可以看到下面这样的炫酷过程. 虽然很炫酷,但有点看不懂. 来解释下,左边的动态数字代表每行被触发的次数.变 ...
- ftp上传文件出现553 Could not creat files 严重文件传输错误
之前上传文件到云服务器上一直出错,发现可以下载但是不能上传和编辑,后来终于找到原因了,是因为上传文件所在文件夹默认只有root用户才有写权限,所以我们还要将写权限赋予给其他用户.可以用Xshell 5 ...
- namedtuple
Python的namedtuple使用详解_kongxx的专栏-CSDN博客_namedtuple https://blog.csdn.net/kongxx/article/details/51553 ...
- 【Python网络编程】epoll用法
epoll发展进程 此处添加一下select.poll历程及其优缺点 原理 使用步骤 Create an epoll object--创建1个epoll对象 Tell the epoll object ...
- 应答流式RPC 请求流式RPC 向流式RPC 流式RPC的三种具体形式
https://mp.weixin.qq.com/s/pWwSfXl71GQZ3KPmAHE_dA 用Python进行gRPC接口测试(二) 大帆船 搜狗测试 2020-02-07 上期回顾:用P ...
- 济南学习D3T1__线性筛和阶乘质因数分解
[问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...