数据库存储引擎—InnoDB

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

14周-存储引擎

  • InnoDB引擎特点

支持事务,适合处理大量短期事务

行级锁

读写阻塞与事务隔离级别相关

可缓存数据和索引

支持聚簇索引

崩溃恢复性更好

支持MACC高并发

从MySQL5.5后支持全文索引

从MySQL5.5.5开始为默认的数据库引擎

 

删除数据库

MariaDB [dingDB]> drop database dingDB;

 

 

创建数据库的时候不定义存储引擎,存储引擎是基于表的,所以叫表类型,而不叫数据库类型

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

 

即使是一个数据库中,也可两张表使用不同的存储引擎,这样做容易乱,不要这样玩!

 

从运维标准化来讲,应该用一种,要想实现自动化,就需要先实现标准化,标准化是运维自动化的前提。

 

也可以在导出的文件中,把MyISAM存储引擎的数据库,修改为InnoDB的存储引擎,替换一下ENGINE=InnoDB就好

 

 

[root@localhost ~]# sed -i.bak ‘s/ENGINE=MyISAM/ENGINE=InnoDB/g’ hellodb_MyISAM.sql

 

[root@localhost ~]# ll

-rw-r–r–. 1 root root 7786 Feb  8 05:12 hellodb_MyISAM.sql

-rw-r–r–. 1 root root 7786 Feb  7 18:24 hellodb_MyISAM.sql.bak

 

 

导入数据库

[root@localhost ~]# mysql < hellodb_MyISAM.sql

 

 

查看

MariaDB [(none)]> show table status from hellodb\G

*************************** 1. row ***************************

Name: classes

Engine: InnoDB

Version: 10

Row_format: Compact

 

InnoDB的小缺点是不支持全文索引,后来才支持,在一个大文章中搜索关键字

[c] InnoDB support for FULLTEXT indexes is available in MySQL 5.6 and later.

 

存放文件的类型,只哟偶表结构,表数据在数据库目录下

[root@localhost /var/lib/mysql/hellodb]# ll

total 88

-rw-rw—-. 1 mysql mysql 8636 Feb  8 05:13 classes.frm

 

数据文件

[root@localhost /var/lib/mysql]# ll

-rw-rw—-. 1 mysql mysql 18874368 Feb  7 21:20 ibdata1

 

修改导入的数据库备份文件

[root@localhost ~]# vim hellodb_MyISAM.sql

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb2` /*!40100 DEFAULT CHARACTER SET utf8 */;

 

USE `hellodb2`;

 

重新导入

[root@localhost ~]# mysql < hellodb_MyISAM2.sql

 

查看

MariaDB [(none)]> show databases;

| hellodb            |

| hellodb2           |

 

本地数据文件,没有变大,文件的大小已经能够放的下新导入的数据了,时间变了

[root@localhost /var/lib/mysql]# ll -h

-rw-rw—-. 1 mysql mysql  18M Feb  7 21:22 ibdata1

 

不同的数据库,都是InnoDB存储引擎,创建的数据库对应的文件夹中,只有表的结构和定义,数据,在数据库目录下,这样不好。可以进行改进

 

每个表,都会有自己独立的表文件了

启用:innodb_file_per_table=ON

两类文件放在数据库独立目录中

 

修改配置文件

[root@localhost ~]# vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

innodb_file_per_table ON可以不加,默认就是NO

 

 

MariaDB [hellodb2]> show variables like ‘%innodb_file_per_table%’;

+———————–+——-+

| Variable_name         | Value |

+———————–+——-+

| innodb_file_per_table | ON    |

+———————–+——-+

1 row in set (0.00 sec)

 

重启服务

[root@localhost ~]# systemctl restart mariadb

 

旧的数据不会拆成多个文件,新的会放到独自的文件夹中

 

删除数据库重新导入一次

MariaDB [(none)]> drop database hellodb2;

 

MariaDB [(none)]> source /root/hellodb_MyISAM.sql

 

 

拆分前

[root@localhost /var/lib/mysql/hellodb]# ll

total 88

-rw-rw—-. 1 mysql mysql 8636 Feb  8 07:51 classes.frm

-rw-rw—-. 1 mysql mysql 8630 Feb  8 07:51 coc.frm

 

拆分后的表

[root@localhost /var/lib/mysql/hellodb2]# ll

total 1432

-rw-rw—-. 1 mysql mysql  8636 Feb  8 07:53 classes.frm 表定义、表结构

-rw-rw—-. 1 mysql mysql 98304 Feb  8 07:53 classes.ibd 表数据、表索引

-rw-rw—-. 1 mysql mysql  8630 Feb  8 07:53 coc.frm

-rw-rw—-. 1 mysql mysql 98304 Feb  8 07:53 coc.ibd

 

索引和数据都放入到单独的文件中了

 

修改配置文件后,添加的InnoDB表才会拆成两个文件!

 

 

把文件备份数来、先停止数据库,拷贝数据库数据文件和表结构文件,做hash完整性校验,防止数据在拷贝的过程中丢失!

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91620

(0)
无言胜千言无言胜千言
上一篇 2018-02-22
下一篇 2018-02-23

相关推荐

  • 文件系统管理和挂载

    磁盘结构 设备类型:     块设备:block,存取单位“块”,例如,磁盘     字符设备:char,存取单位“字符”,键盘 设备文件:关联至一个设备驱动程序,进而能够跟之对应硬件设备进行通信 设备号码:     主设备号:major …

    Linux干货 2016-08-29
  • Linux干货 2017-12-02
  • 文件通配符是啥?

    文件通配符     包含 ‘?’, ‘*’ 或 ‘[‘ 字符的字符串称为通配符模板(wildcard  pattern).形成路径名(globbing)指一种操作,把通配符模板展开为匹配该串的路径名.匹配定义为:   …

    Linux干货 2017-04-23
  • 少走冤枉路!带你走过SNMP的那些坑

    SNMP(Simple Network Management Protocol)即简单网络管理协议,是在网络与系统监控领域中,最常使用的一种数据采集技术。尽管这个协议非常简单,但在大规模IT环境监测中,还是经常会碰到各种坑,因此优云开源了一套友好的SNMPAPI,并通过本文简单介绍这套API中的一些特点,希望帮助各位运维同仁提前规避一些问题。 特点[0].&…

    2016-06-22
  • Linux发行版、发行版联系与区别

    参考这篇文章<2016年最佳Linux发行版排行榜> http://mt.sohu.com/20160128/n436204298.shtml #1 最好的回归发行版:OpenSUSE OpenSUSE背后的SUSE公司是最古老的Linux企业,成立于Linus Torvalds放出Linux的一年之后。它其实早于Red Hat诞生,同时也是社区…

    Linux干货 2016-08-15
  • Linux的命令使用格式

    ◆Linux命令格式:command [options]  [arguments]command:命令options:  –单词   或   -单字如: ls –allequ      ls -als -a -b -cequ&…

    Linux干货 2016-10-31