數據庫存儲引擎—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存儲引擎,創建的數據庫對應的文件夾中,只有表的結構和定義,數據,在數據庫目錄下,這樣不好??梢赃M行改進

 

每個表,都會有自己獨立的表文件了

啟用: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.www58058.com/91620

(0)
無言勝千言無言勝千言
上一篇 2018-02-22 17:16
下一篇 2018-02-23 16:12

相關推薦

  • linux 啟動文件 /etc/fstab 文件刪除 無法開機 修復的方法

    /etc/fstab文件刪除系統自檢無法掛載 無法啟動 按照提示進入命令行  手動寫/etc/fstab,如無內核文件  無grub  就缺啥補啥 fdisk    -l 查看當前分區  blkid    查看分區文件系統的卷標 手動掛載 …

    Linux干貨 2016-09-13
  • N26-第一周博客作業

    1、計算機的組成及功能     CPU: Central Processing Unit 運算與管理控制功能        包括:          &nbsp…

    Linux干貨 2017-01-10
  • LNMMP架構實現Web動靜分離

    前言 前面的文章中說過LAMP架構包括:Linux操作系統,Apache網站服務器,MySQL數據庫,Perl、PHP或者Python編程語言,而今天要說的LNMMP 和LAMP類似,只是作為Web服務器的不再是Apache而是高性能的Nginx,同時引進Memcached加速緩存效率,用于加快訪問速度。 Memcached是一款開源、高性能、分布…

    Linux干貨 2015-06-15
  • 高級文件系統管理1

    本部分內容主要講述了高級文件系統的管理,包括設定文件系統配額,設定和管理軟RAID設備,配置邏輯卷,設定LVM快照和btrfs文件系統。其中文件系統配額和軟RAID在企業中使用的頻率并不很高,作為熟練即可,而邏輯卷的創建和LVM快照是非常重要的內容,必須精通并完全理解其原理。至于btrfs文件系統是新興的一種技術,作為了解即可。 一、知識整理 1、文件系統配…

    Linux干貨 2016-08-29
  • 文本處理工具

    文本處理工具 文件查看命令:cat  cat [OPTION]… [FILE]…  -E: 顯示行結束符$  -n: 對顯示出的每一行進行編號  -A:顯示所有控制符  -b:非空行編號  -s:壓縮連續的空行成一行 [root@centous1 soft]#&nb…

    Linux干貨 2016-08-08
  • 文件處理工具及正則表達式練習

    本節練習均在centos7系統下實現,部分練習只截取部分截圖,另外排版的事情我已經放棄了! 1.找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行 注:^ 行首, . 匹配任意單個字符,* 匹配前面的字符任意次 突然發現前面解法錯誤,沒有排除空格后加小括號的情況,下面是正確做法 2.統計last命令中…

    Linux干貨 2017-07-29
欧美性久久久久