真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【超簡(jiǎn)單】MySQL存儲(chǔ)引擎的選擇與配置

【超簡(jiǎn)單】MySQL存儲(chǔ)引擎的選擇與配置

存儲(chǔ)引擎簡(jiǎn)介

MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲(chǔ)在文件(或內(nèi)存)中。每一種技術(shù)都使用不同的存儲(chǔ)機(jī)構(gòu),索引技巧,鎖定水平并且最終提供廣泛的不同的功能和能力。通過(guò)選擇不同的技術(shù),能夠獲得額外的速度或者功能,從而改善應(yīng)用的整體功能。這些不同的技術(shù)以及配套的相關(guān)功能在MySQL中被稱為存儲(chǔ)引擎。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括禮縣網(wǎng)站建設(shè)、禮縣網(wǎng)站制作、禮縣網(wǎng)頁(yè)制作以及禮縣網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,禮縣網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到禮縣省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

下面就為大家介紹兩種MySQL中比較常見(jiàn)的兩種存儲(chǔ)引擎:MyISAM和InnoDB

MyISAM存儲(chǔ)引擎

MyISAM存儲(chǔ)引擎是MySQL關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)5.5版本之前默認(rèn)的存儲(chǔ)引擎,它的前身是ISAM,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲(chǔ)資源。但是也有他的不足之處:①、不支持事務(wù)處理;②、不能容錯(cuò),即如果硬盤崩潰了,那么數(shù)據(jù)文件就無(wú)法修復(fù)了,除非經(jīng)常備份所有的實(shí)時(shí)數(shù)據(jù),通過(guò)其復(fù)制特性,MySQL能夠支持這樣的備份應(yīng)用程序了。

MyISAM存儲(chǔ)引擎的特點(diǎn)

  1. 不支持事務(wù),需要事務(wù)支持的系統(tǒng)不能使用MyISAM作為存儲(chǔ)引擎
  2. 表級(jí)鎖定形式,數(shù)據(jù)在更新時(shí)鎖定整個(gè)表
  3. 數(shù)據(jù)庫(kù)在讀寫(xiě)過(guò)程中相互阻塞,即讀取時(shí)不能寫(xiě)入,寫(xiě)入時(shí)不能讀取
  4. 可以通過(guò)key_buffer_size來(lái)設(shè)置緩存索引,提高訪問(wèn)的性能,減少磁盤IO(讀寫(xiě))的壓力
  5. MyISAM存儲(chǔ)引擎不支持外鍵約束,只支持全文索引
  6. 每個(gè)MyISAM在磁盤上存儲(chǔ)成三個(gè)文件:

.frm 文件存儲(chǔ)表定義

.MYD(MYData) 數(shù)據(jù)文件

.MYI(MYIndex) 索引文件

基于MyISAM這樣的特性,所以MyISAM主要適用于:一些非高并發(fā)的讀寫(xiě)不需要同時(shí)進(jìn)行的場(chǎng)所;如:電子商城。。。

InnoDB存儲(chǔ)引擎

InnoDB是為了處理巨大數(shù)據(jù)量時(shí)的最大性能而設(shè)計(jì)的。它的CPU效率可能是任何其他基于磁盤的關(guān)系數(shù)據(jù)庫(kù)引擎所不能匹敵的。

InnoDB存儲(chǔ)引擎的特點(diǎn)

  1. 支持事務(wù),支持四個(gè)事務(wù)隔離級(jí)別
  2. 行級(jí)鎖定,但是全表掃描仍然會(huì)是表級(jí)鎖定
  3. 讀寫(xiě)阻塞與事務(wù)隔離級(jí)別相關(guān)
  4. 具有非常高效的緩存特性,能緩存索引,也能緩存數(shù)據(jù)
  5. 表與主鍵以簇的方式存儲(chǔ),即存在外鍵約束
  6. 支持分區(qū)、表空間,類似Oracle數(shù)據(jù)庫(kù)

基于InnoDB的特性,所以InnoDB主要適用于:論壇、微博、銀行等高并發(fā)的場(chǎng)所

企業(yè)選擇存儲(chǔ)引擎的依據(jù)

  1. 存儲(chǔ)引擎支持的字段和數(shù)據(jù)類型
  2. 鎖定類型
  3. 索引的支持
  4. 事務(wù)處理的支持

數(shù)據(jù)庫(kù)及表的存儲(chǔ)引擎的查看

1. 查看數(shù)據(jù)庫(kù)目前使用的存儲(chǔ)引擎

mysql> use school;    //進(jìn)入school數(shù)據(jù)庫(kù)
Database changed
mysql> show engines;     //查看school默認(rèn)使用的存儲(chǔ)引擎,這里因?yàn)槲沂褂玫氖荕ySQL5.7版本的,所以默認(rèn)是InnoDB

   引擎類型          是否能使用                                                                  是否支持事務(wù)           表示為當(dāng)前默認(rèn)的引擎
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| 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         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)

2. 查看表正在使用的存儲(chǔ)引擎

①、直接使用show table status;圖示如下

mysql> mysql> show table status from school where name='info';
+------+--------+---------+------------+------+
| Name | Engine | Version | Row_format | Rows |
+------+--------+---------+------------+------+
| info | InnoDB |      10 | Dynamic    |    1 |                 
+------+--------+---------+------------+------+
1 row in set (0.00 sec)
//省略部分內(nèi)容

這里可以看到info使用的存儲(chǔ)引擎是InnoDB

②、進(jìn)入表所在的數(shù)據(jù)庫(kù),然后使用show create 命令;圖示如下

mysql> use school;

Database changed
mysql> show create table info;
+-------+--------------------------------------+
| Table | Create Table                         |
+-------+--------------------------------------+
| info  | CREATE TABLE "info" (
  "name" char(10) DEFAULT NULL,
  "score" decimal(5,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------+
1 row in set (0.00 sec)

這里也可以直接看到info表的存儲(chǔ)引擎是InnoDB;

數(shù)據(jù)庫(kù)存儲(chǔ)引擎的修改

這里也有四種方法進(jìn)行修改

①、使用alter table命令修改,(這里只針對(duì)現(xiàn)有的表或者數(shù)據(jù)庫(kù))圖示如下

mysql> use school;     //進(jìn)入school數(shù)據(jù)庫(kù)
Database changed
mysql> show create table info;        //查看當(dāng)前使用的存儲(chǔ)引擎
+-------+--------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                   |
+-------+--------------------------------------------------------------------------------------------------------------------------------+
| info  | CREATE TABLE "info" (
  "name" char(10) DEFAULT NULL,
  "score" decimal(5,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |      //這里可以看到默認(rèn)使用的InnoDB類型的
+-------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table info engine=MyISAM;      //使用alter table 命令進(jìn)行修改
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table info;      //再次查看info表使用的存儲(chǔ)引擎類型
+-------+--------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                   |
+-------+--------------------------------------------------------------------------------------------------------------------------------+
| info  | CREATE TABLE "info" (
  "name" char(10) DEFAULT NULL,
  "score" decimal(5,2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |     //這里可以看到存儲(chǔ)引擎就被修改為MyISAM類型了
+-------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

②、修改MySQL的配置文件/etc/my.cnf,指定default-storage-engine選項(xiàng)設(shè)置默認(rèn)的存儲(chǔ)引擎 (這里針對(duì)的是后續(xù)新創(chuàng)建的表)

[root@localhost ~]# vim /etc/my.cnf
...省略
[mysqld]
...省略
pid-file = /usr/local/mysql/mysqld.pid
default-storage-engine=MyISAM       //添加指定默認(rèn)存儲(chǔ)引擎類型MyISAM
socket = /usr/local/mysql/mysql.sock
...省略
修改了配置文件后需要重啟MySQL服務(wù)

> [root@localhost ~]# systemctl restart mysqld.service

重新啟動(dòng)MySQL服務(wù)后,我們?cè)俅芜M(jìn)入數(shù)據(jù)庫(kù),然后創(chuàng)建一個(gè)新的表,在查看存儲(chǔ)引擎

mysql> create database test;       //創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)test
Query OK, 1 row affected (0.01 sec)

mysql> use test;       //進(jìn)入test數(shù)據(jù)庫(kù)
Database changed
mysql> create table test (id int);        //創(chuàng)建一個(gè)test表
Query OK, 0 rows affected (0.01 sec) 

mysql> show create table test;      //查看test表的存儲(chǔ)引擎
+-------+----------------------------+
| Table | Create Table               |
+-------+----------------------------+
| test  | CREATE TABLE "test" (
  "id" int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |      //這里可以看到存儲(chǔ)引擎就是MyISAM  
+-------+----------------------------+
1 row in set (0.03 sec)

③、使用create table 創(chuàng)建表時(shí)用engine指定默認(rèn)的存儲(chǔ)引擎 (創(chuàng)建新表時(shí)自己指定)

mysql> use school;

Database changed
mysql> create table zyc (id int) engine=InnoDB;    //創(chuàng)建一個(gè)新表zyc并且指定存儲(chǔ)引擎為InnoDB
Query OK, 0 rows affected (0.02 sec)

mysql> show create table zyc;        //查看zyc的存儲(chǔ)引擎
+-------+------------------------------+
| Table | Create Table                 |
+-------+------------------------------+
| zyc   | CREATE TABLE "zyc" (
  "id" int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |   //這里可以看到存儲(chǔ)引擎為InnoDB
+-------+------------------------------+
1 row in set (0.00 sec)

④、使用mysql_convert_table_format命令批量轉(zhuǎn)換存儲(chǔ)引擎,命令格式如下:

mysql_convert_table_format --user=root --password=密碼 --socket=/temp/mysql.sock --engine=引擎 庫(kù)名 表名

由于博主使用的是MySQL5.7版本,而這條命令只有MySQL5.5才有,所以這里就不詳細(xì)介紹了,如果有看官感興趣,可以自己安裝一個(gè)MySQL5.5嘗試下。

MySQL的存儲(chǔ)引擎到這里就介紹完了,后續(xù)請(qǐng)期待:MySQL增量備份、MySQL主從同步、MySQL讀寫(xiě)分離


分享文章:【超簡(jiǎn)單】MySQL存儲(chǔ)引擎的選擇與配置
URL標(biāo)題:http://weahome.cn/article/pjeihh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部