1. 程式人生 > >mysql高階:檢視,事務,索引

mysql高階:檢視,事務,索引

mysql高階

  • 檢視
  • 事務
  • 索引
  • 賬戶管理
  • 主從

1.檢視

動態抽象出虛擬表,是為了適應資料庫的改動升級,方便查資料,相當於函式,封裝,重用
create view view_name as SQL查詢語句
NAT 路由器 iTerm
檢視不能改資料,提高了安全性
讓資料更清晰
每查一次都會重複執行一次重構檢視,會降低效率,有的公司禁止使用檢視

刪除檢視,drop view view_name

2.事務

python操作mysql就預設開啟了事務,所以才需要conn.commit()
四個原則特性ACID,面試筆試重要
事務是操作序列,要麼都執行完,要麼都不執行完,是一個不可分割的工作單位
原子、一致、隔離、持久;
打包一致性資料操作在一個事務中,任何一個操作失敗,回滾所有的操作步驟;

步驟

  • start transaction/begin
  • 。。。SQLS 資料操作s
  • commit

錯誤回滾就是rollback;


A:原子性:事務被視為不可分割的最小工作單位
C:一致性:資料庫總是從一個狀態到另一個狀態,如果成功兩張表的狀態是一致的,不成功也是一致的;就像轉賬,不會因為中途發生故障一邊扣了錢,一邊沒有增加餘額
I:隔離性:給資料上了鎖,一個事務在最終提交前,對其他事務是不可見的。看到的還是未改動狀態,上了鎖,別的改動要等這個鎖;就想12306搶票
D:永續性:一旦事務提交,會永久儲存到資料庫裡。資料庫儲存到硬盤裡,就算斷電也不會改變
**

3.索引

面試重要,為了解決資料庫資料量較大,查詢變得慢
是一種特殊的資料結構(檔案),都存的是其他的資料的引用,包含了對錶裡所有記錄的引用指標,放在了資料表裡
好比一本書的目錄,能加快資料庫的查詢速度
B-tree:完全二叉樹,把資料分段,分為三段,分段查詢,一下子就去除了百分之90的無效資料
B-tree:完全二叉樹一種(葉節點右邊不允許為空),左邊的節點總是小於右邊的節點;

索引的使用

檢視:show index from table_name;
建立:create index index_name on table_name(欄位名稱(長度));
刪除:drop index index_name on table_name;

表的主鍵和外來鍵都是索引
建立索引會影響更新和插入的速度,所以都是用來查詢就可建立索引,如果更新頻率高就不要建

4.賬戶管理

許可權的管理

4.1授予許可權

%任何地方登入
mysql表裡儲存管理使用者資訊
authentication_string欄位是密碼
建立使用者,給予許可權:
grant 許可權列表 on 資料庫 to ‘使用者名稱’@‘訪問主機’ identified by ‘密碼’;

4.2遠端連線

mysql -uxxx -p -hxxx

5.主從

專機專用,主從就是有多臺伺服器,多臺伺服器聯合使用
優點:備份,負載均衡
從伺服器自動向主伺服器請求資料,欄位來備份
寫在主伺服器的資料庫,讀可以分配給從伺服器資料庫們,從伺服器們實時從主伺服器請求資料備份,實現讀寫分離,負載均衡,資料備份的優點

主從同步使得資料可以從一個數據庫伺服器複製到其他伺服器上,在複製資料時,一個伺服器充當主伺服器(master),其餘的伺服器充當從伺服器(slave)。因為複製是非同步進行的,所以從伺服器不需要一直連線著主伺服器,從伺服器甚至可以通過撥號斷斷續續地連線主伺服器。通過配置檔案,可以指定複製所有的資料庫,某個資料庫,甚至是某個資料庫上的某個表。

怎麼實現?

有很多種配置主從同步的方法,可以總結為如下的步驟:

在主伺服器上,必須開啟二進位制日誌機制和配置一個獨立的ID
在每一個從伺服器上,配置一個唯一的ID,建立一個用來專門複製主伺服器資料的賬號
在開始複製程序前,在主伺服器上記錄二進位制檔案的位置資訊
如果在開始複製之前,資料庫中已經有資料,就必須先建立一個數據快照(可以使用mysqldump匯出資料庫,或者直接複製資料檔案)
配置從伺服器要連線的主伺服器的IP地址和登陸授權,二進位制日誌檔名和位置

1.備份主伺服器原有資料到從伺服器
mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

2.在從伺服器上還原
mysql –uroot –pmysql < master_db.sql

  1. 配置主伺服器master
    編輯設定mysqld的配置檔案,設定log_bin和server-id

4.在主伺服器建立slave賬戶
GRANT REPLICATION SLAVE ON . TO ‘slave’@’%’ identified by ‘slave’;

5.獲取主伺服器的二進位制日誌資訊
show master status; 獲取file,position欄位資料

6.配置從伺服器配置的slave,和主伺服器一樣設定log_bin和server-id

7.設定從伺服器的監聽
change master to master_host=‘10.211.55.5’, master_user=‘slave’, master_password=‘slave’,master_log_file=‘mysql-bin.000006’, master_log_pos=590;

master_host:主伺服器Ubuntu的ip地址
master_log_file: 前面查詢到的主伺服器日誌檔名
master_log_pos: 前面查詢到的主伺服器日誌檔案位置

8.開啟同步
start slave;
檢視show slave status \G 看得到slave狀態