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

2021-10-19 19:04:55 字數 3561 閱讀 8378

pysql:

sql注入:太相信使用者輸入的所有的資料。

解決方法:1.自己手動去判斷轉義使用者輸入的資料2.不要拼接sql語句,使用pymysql 的execute方法,防止sql的注入。

事務:一組操作,要麼都成功要麼都失敗

四大特性:

1.原子性:原子是最小的粒度,所以說一組操作要麼都 成功要麼都失敗

2.一致性:無論事務前還是事務後,資料的總額不變。

3.隔離型:事務與事務之間是隔離的,乙個事務內的操作,另乙個事務是不可見的

4.永續性:乙個事務結束後,其影響應該保留下來,不可修改,只能通過補償事務來彌補之前的錯誤

開啟:start transaction

結束: commit

回滾:rollback

但如果在事務內刪除了乙個表(drop table 表名)那麼回滾就不能返回這個表了,其他資料庫都一樣,但除了oracle(flashback)

儲存引擎:

create table t1(id int auto_increment primary key, name varchar(16) not null default '')engine=innodb charset=utf8;

上面建立表的engine=innodb 就是引擎

引擎的分類:

inodb:

1.5.5(含5.5)版本預設就是innodb

2.支援事務

3.支援全文索引

4.索引和資料都是在同乙個檔案中,叫.ibd,表的結構在.frm檔案中

myisam:

1.5.5(不含5.5)以下版本預設myisam

2.不支援事務

3.支援全文索引

4.表結構:.frm   表資料:.myd  表索引: .myi

全文索引:sphinx

索引:作用:加快查詢的速度

模擬:新華字典的目錄,可以將索引理解成乙個特殊的檔案,然後如果沒有這個檔案的話,查詢是從前到後查詢資料的,如果有這個檔案的話,會按照一種特殊的資料結構(二叉樹)查詢資料。

分類:主鍵索引:加快查詢速度,不能重複,不能為空。primary  key

唯一索引:加快查詢速度,不能重複,可以為空。unique(列名)

聯合唯一索引:加快查詢速度 ,不能重複,可以為空 unique(列名1,列名2)

,普通索引:加快查詢   index(列名)

建立:主鍵索引:

第一種:

create table t1(id int auto_increment primary key, name varchar(16) not null default '')engine=innodb charset=utf8;

第二種:

alter table t1 change id id int  auto_increment primary key;

唯一索引:

第一種:

create table t1(id int auto_increment primary key, name varchar(16) not null default '',unique 別名(列名))engine=innodb charset=utf8;

第二種:

create unique index 索引名稱(ix_name) on 表名(t1)(列名)

create unique index 索引名稱(ix_name_age) 表名(t1)(name,age)

普通索引:

第一種:

create table t1(id int auto_increment primary key, name varchar(16) not null default '',index ix_name(列名))engine=innodb charset=utf8;

第二種:

create index 索引名稱(ix_name) on 表名(t1)(列名)

刪除:drop 索引名稱(ix_name) on表名(t1);

場景:使用頻繁的列上加乙個索引

索引的缺點:版本5.3以下:刪除和修改的速度就變慢了。版本5.5以上:刪除和修改的速度不是特別的慢

索引的使用:

explain 工具

檢視sql語句是否用得上索引,或者檢視sql執行效率的工具

給執行的sql語句出報告,通過此報告來判斷sql語句的執行效率和效果

es(elasticsearch)

sql語句的規則:

不建議使用like進行搜尋

組合索引最左字首

如果組合索引為:(name,email)

where name and email -- 使用索引

where name -- 使用索引

where email -- 不使用索引

慢日誌(slow log):

日誌檔案: 記錄了執行速度特別慢的sql語句

開啟的步驟:

1. show variables like '%query%';

2. set global long_query_time = 1; 設定慢查詢的時間

3. slow_query_log = on

4. slow_query_log_file = e:\program\mysql-5.6.44-winx64\data\oldboy-slow.log

普通日誌記錄(general log):

sql審計 (記錄sql的操作語句)

show variables like '%general%';

| variable_name | value |

| general_log | on |

| general_log_file | e:\program\mysql-5.6.44-winx64\data\oldboy.log |

set global general_log = on;

許可權管理:

建立使用者:

create user '使用者名稱'@'ip位址' identified by '密碼';

creaee user 'zekai'@'192.168.1.123' identified by '123qwe';

creaee user 'zekai'@'192.168.1.%' identified by '123qwe';

create user 'zekai'@'%' identified by '123qwe';

刪除使用者

drop user '使用者名稱'@'ip位址';

修改使用者

rename user '使用者名稱'@'ip位址' to '新使用者名稱'@'ip位址';

修改密碼

set password for '使用者名稱'@'ip位址' = password('新密碼')

授權:grant 許可權 on 資料庫.表 to '使用者'@'ip位址' -- 授權

grant select on db1.* to 'zekai'@'%';

grant select on *.* to 'zekai'@'%';

grant select, insert, delete on db1.* to 'zekai'@'%';

記住:flush privileges;

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

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

MySQL事務 索引

一 事務處理步驟 set autocommit 0 關閉mysql的自動提交 start transaction 開始乙個事務,標記事務的起點 commit 提交乙個事務給資料庫 rollback 將事務回滾,所有commit中的操作將取消 set autocommit 1 還原mysql資料庫自動...

MySQL事務 索引

1 事務 事務就是將一組sql語句放在同一批次內去執行 如果乙個sql語句出錯,則該批次內的所有sql都將被取消執行 持innodb和bdb資料表型別 2 acid 屬性 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 3 mys...