MYSQL資料庫擴充套件 索引與事務與引擎

2022-08-21 04:51:11 字數 4550 閱讀 6577

mysql資料庫擴充套件 索引與事務與引擎

面試:一、資料庫的索引

1、索引

在資料庫中,索引使資料庫程式無須對整個表進行掃瞄,就可以在其中找到所有資料。資料庫的索引是某個表中一列或者若干列值的集合,以及物理標識這些值的資料頁的邏輯指標清單。

2、作用

(1)設定了合適的索引之後,資料庫利用各種快速的定位技術,能夠加快查詢速率,特別是當表很大時,或者查詢涉及到多個表時,使用索引可使查詢加快成千倍。

(2)可以降低資料庫的io成本,並且索引還可以降低資料庫的排序成本。

(3)通過建立唯一性索引保證資料表資料的唯一性,可以加快表與表之間的連線。

(4)在使用分組和排序時,可大大減少分組和排序時間。

3、分類

(1)普通索引

這是最基本的索引型別,而且沒有唯一性之類的限制

(2)唯一性索引

與普通索引相同,區別在於:索引列的所有值只能出現一次,即必須唯一,但可以為空

(3)主鍵

是一種特殊的唯一索引,必須指定為「primary key」,具有唯一性的不能為空

(4)全文索引

在mysql中,全文索引的型別為fulltext,全文索引可以在varchar或者text型別的列上建立。貼吧的文字內容,和一些小型的**網頁內容,存放在資料庫中即為全文索引模式。

(5)單列索引和多列內容

索引可以是單列上建立的索引,也可以是多列上建立的索引。

4、建立索引的原則

表的主鍵、處鍵必須有索引

數量超過300行的表應該有索引。

經常與其他表進行連線的表,在連線欄位上應該建立索引

唯一性太差的字段不適合建立索引

更新太頻繁的字段不適合建立素引。

經常出現在where字句中的字段,特別是大表的字段,應該建立索引。

索引應該建在選擇性高的字段上

索引應該建立在小字段上,對於大的文字字段甚至超長字段,不要建立索引

5、建立、檢視、刪除索引的方法

建立普通索引:create 《索引的名字》 on 表名;

建立唯一性索引:create unique index 《索引的名字》 on 表名;

建立主鍵索引:create table 表名 primary key (字段);

建立主鍵索引:alter table 表名 add primary key(字段);

檢視索引:show index from 表名\g     //\g   豎著顯示

檢視索引:show keys from 表名\g     //\g   豎著顯示

刪除索引:drop index 《索引的名字》 on 表名;

刪除索引:alter table 表名 drop index  《索引的名字》;

刪除主鍵索引:alter table 表名 dorp primary key;

二、資料庫事務

1、事務的概念

事務是一種機制、乙個操作序列,包含了一組資料庫操作命令,並且把所有的命令作為乙個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要麼都執行,要麼不都執行。事務是乙個不可分割的工作邏輯單元,在資料庫系統上執行併發操作時,事務是最小的控制單元。事務適用於多使用者同時操作的資料庫系統的場景,如銀行、保險公司及**交易系統等等。通過事務的完整性以保證資料的一致性。

2、事務的acid特點

事務具有四個屬性:acid

1)原子性(atomicity)

事務是乙個完整的操作,事務的各元素是不可分的(原子的),事務的所有元素必須作為乙個整體提交或回滾。如果事務中的任何元素失敗,則整個事務將失敗。

2)一致性(consistency)

當事務完成時,資料必須處於一致狀態:在事務開始之前,資料庫彙總儲存的資料處於一致狀態;在正在進行的事務中,資料可能處於不一致的狀態;當事務完成時,資料必須再次回到已知的一致狀態

3)隔離性(isolation)

對資料進行修改的所有併發事務是彼此隔離的,這表明事務必須是獨立的,它不應該以任何方式依賴於或影響其他事務。修改資料的事務可以在另乙個使用相同資料的事務開始之前訪問這些資料,或者在另乙個使用相同資料的事務結束之後訪問這些資料。

4)永續性(durability)

事務的永續性指不管系統是否發生了故障,事務處理的結果都是永久的。一旦事務被提交,事務的效果會被永久地保留在資料庫中。

3、事務的操作

預設情況下mysql的事務是自動提交的,當sql語句提交時事務便自動提交。

手動對事務進行控制的方法:

事務處理命令控制。

使用set 設定事務處理方式

事務處理命令控制事務:

begin    : 開始乙個事務

commit  :提交乙個事務

rollback  :回滾乙個事務  //撤銷操作

事務的操作必須基於innodb引擎

> set autocommit=0;     //禁止事務自動提交

> set autocommit=1;     //開啟事務自動提交

三、資料庫儲存引擎

1、概念

mysql 資料庫中使用各種不同的技術儲存資料到檔案系統中,每一種技術都使用不同的儲存機制、索引技巧,鎖定水平並最終提供不同的功能和能力,這些不同的技術以及配套的功能在mysql中稱為儲存引擎。

儲存引擎就是mysql將資料儲存在檔案系統中的儲存方式或者儲存格式。

目前mysql常用的兩種儲存引擎:mylsam、innodb

mysql儲存引擎是mysql資料庫伺服器中的元件,負責為資料庫執行實際的資料1/0操作,使用特殊儲存引擎的主要優點之一在於僅需提供特殊應用所需的特性,資料庫中的系統開銷較小,具有更有效和更高的資料庫效能。

mysql系統中,儲存引擎處於檔案系統之上,在資料儲存到資料檔案之前會傳輸到儲存引擎,之後按照各個儲存引擎的儲存格式進行檔案的物理儲存。

2、myisam儲存引擎

1)概述

myisam儲存引擎是mysql關係資料庫系統5.5版本之前預設的儲存引擎,前身是isam。

isam是乙個定義明確且經歷時間考驗的資料**管理方法,在設計之時就考慮到資料庫被查詢的次數要遠大於更新的次數。

iisam的特點:isam執行讀取操作的速度很快,而且占用不大量的記憶體和儲存資源,它不支援事務處理,不能夠容錯。

myisam管理非事務表,是isam的擴充套件格式,提供isam裡所沒有的索引和字段管理的大量功能。

myisam使用一種**鎖定的機制,以優化多個併發的讀寫操作。myisam提供高速儲存和檢索,以及全文搜尋能力,受到web開發的青睞。

2)特點

不支援事務。

表級鎖定形式,資料在更新時鎖定整個表。。

資料庫在讀寫過程中相互阻塞(會在資料寫入的過程中阻塞使用者資料的讀取,也會在資料讀取的過程中阻塞使用者的資料寫入)。

可以通過key buffer_size來設定快取索引,提高訪問效能,減少磁碟i0的壓力,但快取只會快取索引檔案,不會快取資料。

採用myisam儲存引擎資料單獨寫入或讀取,速度過程較快而且占用資源相對較少。。

myisam儲存引擎不支援外來鍵約束,只支援全文索引。

每個myisam在磁碟上儲存成三個檔案,每乙個檔案的名字以表的名字開始,副檔名指出檔案型別。

frm檔案儲存表定義

myd檔案儲存資料(mydata)

myi檔案儲存索引檔案(myindex)

3)生產場景

公司業務不需要事務支援

一般單方讀取資料比較多的業務,或單方面寫入資料比較多的業務,如:www.blog,資訊資料庫,使用者資料庫,商品庫等業務,myisam儲存引擎資料讀寫都比較頻繁的場景不適合。

對資料業務一致性要求不是非常高的業務。

使用讀寫併發訪問相對較低的業務。

資料修改相對較少的業務

伺服器硬體資源相對比較差

3、innodb儲存引擎

1)特點

支援事務:支援4個事務隔離級別。

行級鎖定,但是金掃瞄仍然會是表級鎖定

讀寫阻塞與事務隔離級別相關

具有非常高效的快取特性:能快取索引,也能快取資料

表與主鍵以簇的方式儲存

支援分割槽、表空間,類似oracle 資料庫。

支援外來鍵約束,5.5以前不支援全文索引,5.5版本以後支援全文索引

時硬體資源要求比較高。

2)生產場景

業務需要事務的支援。

行級鎖定對高併發有很好的適應能力,但需要確保查詢是通過索引來完成。

業務資料更新較為頻繁的場景,如:論壇,微博。

業務資料一致性要求較高,如:銀行業務。

硬體裝置記憶體較大,利用lnnodb較好的快取能力來提高記憶體利用率,減少磁碟i0的壓力。

4、相關命令

show engins\g  檢視儲存引擎

show table status from 庫名 where name=『表名』;檢視表的儲存引擎

show create table 表名;檢視表的儲存引擎

alter table 表名 engine=引擎;  修改表或庫的引擎

修改vim /etc/my。cnf   設定預設的儲存引擎           在配置檔案中[mysqld]下新增:default-storage-engien=innodb

create table 表名(列 型別)engine=引擎;  建立表時指定引擎

MySQL資料庫 事務與索引

事務介紹 事務 transaction 一般是指要做的或所做的事情.在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 例如 去銀行取500元錢,大概有兩個步驟 第一步輸入密碼金額,銀行卡扣掉500元 第二部從atm出500元錢.這兩個步驟必須是要麼都執行要麼都不執行.如...

MySQL 資料庫索引與事務的特性

索引的概念 索引是資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的性查詢他或她,則與在表中搜尋的所有行相比,索引有助於更快的獲取資訊。索引的乙個主要的目的就是加快檢索表中資料的方法,也是盡快的找到符合限制條件的記錄id的輔助資料結構 優點 通過建...

MySQL資料庫 索引和事務

1.概念 索引是一種特殊的檔案,包含著對資料表裡所有記錄的引用指標,可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現 乙個表可以有多個唯一索引 該欄位沒有重複值,但可以有乙個空值 2.作用 資料庫中索引的作用就相當於書籍的目錄,可用於快速定位,檢索資料.索引對於提高資料...