MySQL事務 索引 資料恢復和備份

2021-10-23 12:56:22 字數 3848 閱讀 4021

mysql的事務實現方法步驟

資料庫索引

管理索引

mysql的備份

mysql資料庫的恢復

利用sql語句匯出、匯入資料

事務就是將一組sql語句放在同一批次內去執行

如果乙個sql語句出錯,則該批次內的所有sql都將被取消執行

mysql事務處理只支援innodb和bdb資料表型別

事務必須具備以下四個屬性,簡稱acid 屬性

原子是最小單元,不能再分割。事務中所有操作是不可再分割的原子單位。事務中所有操作要麼全部執行成功,要麼全部執行失敗。

事務執行後,資料庫狀態與其它業務規則保持一致。如轉賬業務,無論事務執行成功與否,參與轉賬的兩個賬號金額之和應該是不變的。

隔離性是指在併發操作中,不同事務之間應該隔離開來,使每個併發中的事務不會相互干擾。也就是說,在事中務檢視資料更新時,資料所處的狀態要麼是另一事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視到中間狀態的資料(但如果有等級,則會看到)。

例如:在a事務中,檢視另一b事務(正在修改張三的賬戶金額)中張三的賬戶金額,要檢視到b事務之前的張三的賬戶金額,要麼檢視到b事務之後張三的賬戶金額。事務隔離性分等級。

一旦事務提交成功,事務中所有的資料操作都必須被持久化到資料庫中,即使提交事務後,資料庫馬上崩潰,在資料庫重啟時,也必須能保證通過某種機制恢復資料。

索引不是越多越好

不要對經常變動的資料加索引

小資料量的表建議不要加索引

索引一般應加在查詢條件的字段

提高查詢速度

確保資料的唯一性

可以加速表和表之間的連線,實現表與表之間的參照完整性

使用分組和排序子句進行資料檢索時,可以顯著減少分組和排序的時間

全文檢索字段進行搜尋優化

某乙個屬性或屬性的組合能唯一標識一條記錄

特點:最常見的索引型別

確保資料記錄的唯一性

確定特定資料記錄在資料庫中的位置

create table  `grade` (

`gradeid` int(11) auto_increment primary key,

#省略**……

#主鍵索引也可在字段字義之後,如

# primary key(`gradeid`)

)

作用:避免同乙個表中某資料列中的值重複

與主鍵索引的區別:主鍵索引只能有乙個,唯一索引可有多個。

create table  `grade` (

`gradeid` int(11) auto_increment primary key,

`gradename` varchar(32) not null unique

#或 unique key `gradeid` (`gradeid`)

)

作用:快速定位特定資料

注意:index和key關鍵字都可設定常規索引

應加在查詢條件的字段

不宜新增太多常規索引,影響資料的插入、刪除和修改操作

#建表時新增

create table `result` (

//省略一些**

index/key `ind` (`studentno`, `subjectno`)

)#建表後新增

alter table `result` add index `ind`

(`studentno`, `subjectno`);

作用:快速定位特定資料

注意:只能用於myisam型別的資料表

只能用於 char 、 varchar、text資料列型別

適合大型資料集

#建表時新增

create table `student` (

#省略一些sql語句

fulltext (`studentname`)

)engine=myisam;

#建立後追加

alter table employee add fulltext (`first_name`);

#追加

alert table 表名 add 索引型別(資料列名)

drop  index 索引名 on    表名

alter table 表名 drop index 索引名

alter table 表名 drop primary key

show  index(或keys) from 表名
explain  表名  (desc 表名)

explain select語句

在where、order by 子句中經常使用的字段

欄位的值是多個(例如性別欄位則不適合)

字段內容不是經常變化的,經常變化的字段,新增索引反而降低效能

不宜過多新增索引,每新增一條索引都會占用磁碟空間

保證重要資料不丟失

資料轉移

mysqldump備份工具

資料庫管理工具,如sqlyog

直接拷貝資料庫檔案和相關配置檔案

作用:轉儲資料庫

蒐集資料庫進行備份

將資料轉移到另乙個sql伺服器(不一定是mysql伺服器)

mysqldump  -h 主機名 –u 使用者名稱 –p   [options]   資料庫名  

[ table1 table2 table3 ] > path/filename.sql

# 備份myschool資料庫如: 

可通過mysqldump --help 檢視該命名的選項

方法一用 source 語法

/path/是乙個絕對路徑,並且必須是mysql 執行使用者有許可權讀取的檔案

source 在mysql命令列裡執行

source     /path/db_name.sql;
方法二

用 mysql 客戶端

mysql –u root –p  dbname  <  /path/db_name.sql;
都要先建立或選擇資料庫

匯出資料

select   *   into   outfile   'file_name'  

from tbl_name

輸出的檔案不能先存在,否則報錯

匯入資料

load   data   infile   'file_name '   

into table tbl_name[fields

```

mysql索引和事務 MySql索引和事務

mysqlde 索引 目的 是為了加快查詢的速度,避免順序查詢,但是拖慢了插入和刪除的速度.應用在在經常查詢,很少少出插入的場景中.結構 b 樹,n叉搜尋樹,使用鏈式的結構把每一層的節點連線在一起,葉子節點中儲存資料,非葉子節點輔助查詢.主鍵索引和其他索引的不一樣 主鍵索引葉子節點儲存一條一條的資料...

mysql事務索引 mysql事務索引和許可權管理

pysql sql注入 太相信使用者輸入的所有的資料。解決方法 1.自己手動去判斷轉義使用者輸入的資料2.不要拼接sql語句,使用pymysql 的execute方法,防止sql的注入。事務 一組操作,要麼都成功要麼都失敗 四大特性 1.原子性 原子是最小的粒度,所以說一組操作要麼都 成功要麼都失敗...

mysql 索引和事務

索引 索引就類似於書籍的目錄,通過索引,可以提高表中資料的查詢速率 作用 快速定位,檢索資料 使用場景 1 適用於海量資料進行條件查詢 2 適用於查詢經常的依據列,這些列一定很少進行修改操作 3 索引會占用額外的磁碟空間 盡量避免給不定長字串的字段設定索引字段 索引的使用事務 事務就是邏輯上的操作原...