數據庫存儲引擎—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
下一篇 2018-02-23

相關推薦

  • 馬哥教育網絡班22期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。   cp -r /etc/skel /home/tuser1    chmod -R go=— /home/tuser1 2、編輯/etc/group文件,添加組hadoo…

    Linux干貨 2016-09-19
  • Linux磁盤管理基礎

    Linux磁盤管理基礎 硬盤結構 文件系統與MBR、GTP 磁盤管理三步驟:分區、格式化、掛載 mount 硬盤結構 硬盤的基本組成材質是盤片,不同容量硬盤的盤片數不等。每個盤片有兩面,都可記錄信息。盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道,不同盤片相同半徑的磁道所組成的圓柱稱為柱面,每個磁道被分成許多扇形的區域,每個區域叫一個扇區,每個扇區可存…

    Linux干貨 2016-09-01
  • 2018第六屆中國網絡安全大會即將于6月強勢登陸!

    2018年6月13日,由賽可達實驗室、國家計算機病毒應急處理中心、國家網絡與信息系統安全產品質量監督檢驗中心、首都創新大聯盟共同舉辦的第六屆中國網絡安全大會(NSC 2018)將在北京國家會議中心盛大召開。

    2018-03-15
  • shell進階之循環

    循環執行,將某代碼段重復運行多次

    重復運行多少次:

    循環次數事先已知

    循環次數事先未知

    有進入條件和退出條件

    for, while, until

    Linux干貨 2017-12-24
  • LNMP的虛擬主機配置http和https

    項目實戰:    搭建LNMP環境:Linux+Nginx+Mysql(MariaDB)+php(php-fpm),創建多個虛擬主機:    主機1提供正常的http服務,用于安裝wordpress博客;    主機2提供正常的https服…

    Linux干貨 2016-10-30
  • LINUX-用戶和組管理

    LINUX用戶和組管理 linux用戶分類:Username/UID      管理員:root,UID 0號,擁有最高權限;負責系統的啟功、停止,安裝新軟件,               增加、刪除用戶,保證系統正常運轉;     &nb…

    2017-05-30
欧美性久久久久