理論 實驗 MySQSL索引 事務與儲存引擎

2021-10-23 12:06:33 字數 3944 閱讀 5896

二、事務介紹 ==引擎需要innodb==

三、儲存引擎介紹

1.1.1 資料庫索引

1.3.1 普通索引 index

#1	直接建立

mysql> create index index_name on table_name(column(length));

#2 修改表的方式建立

mysql> alter table table_name add index index_name (column(length));

#3 建立表的時候建立

mysql> create table table_name (id int(3) auto_increment,name varchar(10) not null,score decimal(5,2) not null,address varchar(50) default '未知',primary key(id),==index index_name(id)==);

1.3.2 唯一性索引 unique index

#1	直接建立

mysql> create unique index index_name on table_name(某一字段);

#2 修改表的方式建立

mysql> alter table table_name add unique index index_name(某一字段);

#3 建立表的時候建立

mysql> create table table_name (id int(3) not null auto_increment,name varchar(10) not null,score decimal(5,2) not null,address varchar(50) default '未知',primary key(id),unique index index_name(id));

1.3.3 主鍵索引 primary key

mysql> create table table_name (id int(3) not null auto_increment,name varchar(10) not null,==primary key(id)==);
1.3.4 組合索引 單列索引與多列索引

mysql> create table table_name (name varchar(10),age int(3),==index index_name(name,age)==);
1.3.5 全文索引 fulltext index

#1

mysql> create fulltext index index_name on table_name (column(length));

#2mysql> alter table table_name add fulltext index index_name (column(length));

#3mysql> create table table_name (id int(3) not null auto_increment,name varchar(10) not null,score decimal(5,2) not null,address varchar(50) default '未知',primary key(id),==fulltext index index_name(id)==);

mysql> show index from table_name;

mysql> show keys from table_name;

mysql> drop index index_name on table_name;

mysql> alter table table_name drop index index_name;

1.7.1 第一正規化(確保每列保持原子性)

1.7.2 第二正規化(確保表中的每列都和主鍵相關)

1.7.3 第三正規化(確保每列都和主鍵列直接相關,而不是間接相關)

9.1 原子性(atomicity)

9.2 一致性(consistency)

9.3 隔離性(isolation)

9.4 永續性(durability)

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

begin:		開始乙個事務

commit: 提交乙個事務

rollback: 回滾乙個事務

set autocommit=0:	禁止自動提交

set autocommit=1: 開啟自動提交

innodb的儲存引擎才支援事務; 5.7以後都是支援事務的

#	使用test資料庫

mysql> use test;

# 建立表,引擎是innodb

mysql> create table test_transaction_test(id int(3))engine=innodb;

# 檢視表test_transaction_test的資訊

mysql> select * from test_transaction_test;

#	開始事務

mysql> begin;

# 新增記錄到表中

mysql> insert into test_transaction_test values (1);

mysql> insert into test_transaction_test values (2);

# 提交事務

mysql> commit;

# 檢視表中資訊

mysql> select * from test_transaction_test;

#	開始事務

mysql> begin;

# 新增記錄到表中

mysql> insert into test_transaction_test values (3);

# 回滾

mysql> rollback;

# 檢視表中資訊

mysql> select * from test_transaction_test;

myisam			===>表級鎖定,鎖定整張表

innodb ===>行級鎖定,鎖定某一行

.frm檔案儲存表定義					===>表的定義檔案

資料檔案的擴充套件名為.myd(mydata)

索引檔案的副檔名是.myi(myindex)

會在資料寫入的過程阻塞使用者資料的讀取

也會在資料讀取的過程中阻塞使用者的資料寫入

靜態表

動態表壓縮表

如:論壇、微博等
如:銀行業務
但所有引擎都支援通用的資料型別

但不是所有的引擎都支援其它的字段型別,如二進位制物件

表鎖定

行鎖定

簡歷索引在搜尋和恢復資料庫中的資料時能顯著提高效能

不同的儲存引擎提供不同的製作索引技術

有些儲存引擎根本不支援索引

提高在向表中更新和插入資訊期間的可靠性

可根據企業業務是否要支援和事務選擇儲存引擎

alter table table_name engine=引擎;
default-storage-engine=引擎;
create table table_name (字段) engine=引擎;

事務與索引

1 原子性 atomicity 事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執 行。2 一致性 consistency 幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相 一致。3 隔離性 isolation 事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必...

MySQL事務與索引

事務 就是將一組sql語句放在同一批次內去執行 如果乙個sql語句出錯,則該批次內的所有sql都將被取消執行 事務的acid原則 1.原子性 2.一致性 3.隔離性 4.永續性 set autocommit 使用set語句來改變自動提交模式 set autocommit 0 關閉自動提交模式 set...

MySQL資料庫 事務與索引

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