一,資料庫索引,是資料庫管理系統中一個排序的資料結構,以協助快速查詢,更新資料庫表中的資料。
1,事務的保障:ACID。
ACID一言以蔽之就是原子性、一緻性、隔離性、持久性事務,它是四個單詞的縮寫:
¥Atomicity,原子性,事務中的操作要麼全部完成,要麼全失敗。
¥Consistency,一緻性, 在事務開始時或者結束時,資料庫應該處于同一狀态。
¥Isolation,隔離性,事務将假定隻有它自己在操作資料庫,彼此不知曉。
¥Durablity,一旦事務完成,就不能傳回。
2,豐富的資料類型和SQL的操作方式。
1),數字:整數和小數。整數可以分為32位,64位。
2),字元串類型:字元串分為固定長度和可變長度。
3),時間, 時間和日期
4),二進制流。
3,SQL語句的結構主要分為以下幾大部分:
1),操作,select, insert, update, delete
2),表對象。
3),字段範圍
4),where
5),order排序
6),查詢範圍限制。
4,對資料高并發讀寫的要求。
資料庫讀寫壓力大, 硬碟IO無法承受。一般處理方法是主從架構、讀寫分離、分庫、分表,緩解寫壓力,增強讀庫的可擴充性。
5,對海量資料的存儲和通路
存儲記錄數量有限,SQL查詢效率極低的情況下。通過分庫、分表,緩解資料增長壓力。
6,伸縮性、可用性、可靠性方面的需求。
橫向擴充艱難,無法通過快速增加伺服器節點實作,系統更新和維護造成服務不可用。通過主從架構,增強讀庫的擴充性,利用MMM架構處理寫的瓶頸。
7,分庫分表的缺點:
1),受業務規則影響,需求變動導緻分庫分表的維護複雜。
2),系統資料通路層代碼需要修改。
8,主從架構缺點:
1),Slave實時性保障。對于實時性很高的場合可能需要做一些處理( 在第一個購買增值服務的例子中,添加扣費記錄之後,在讀寫分離的場景下,立馬去從庫查詢扣費記錄不一定能查到 )。
2),高可用性問題,Master就是那個緻命點,容易産生單點故障。
MMM缺點:本身擴充性差,一次隻能一個Master可以寫入,隻能解決有限資料量下的可用性。
mysql索引概念:
假如這本書1000頁,有500也是目錄,它當然效率低,目錄是要占紙張的,而索引是要占磁盤空間的。
Mysql索引主要有兩種結構:B+Tree索引和Hash索引。
Hash索引
MySQL中,隻有Memory存儲引擎顯示支援Hash索引,是Memory表的預設索引類型。
因為是hash結構,每個鍵隻對應一個值,而且是散列的方式分布。是以并不支援範圍查找和排序功能。
B+數索引
二,觸發器。
1,觸發器的“自動性”。(修改一張表,其他幾個或者多個表中的備援字段會更改。)
2,觸發器的資料完整性。(復原性,要不都更改,要不都不更改。)
例子:
【mysql> drop trigger if exists deletecomment ||
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create trigger deletecomment before delete on user for each row
-> begin
-> delete from comment where comment.u_id=old.id;
-> end ||
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter;
删除user表中的資料,之後會删除comment表中一條對應user表的資料。
】
三,存儲過程。
1、使用了存過程,很多相似性的删除,更新,新增等操作就變得輕松了,并且以後也便于管理!
2、存儲過程因為SQL語句已經預編繹過了,是以運作的速度比較快。
3、存儲過程可以接受參數、輸出參數、傳回單個或多個結果集以及傳回值。可以向程式傳回錯誤原因。
4、存儲過程運作比較穩定,不會有太多的錯誤。隻要一次成功,以後都會按這個程式運作。
5、存儲過程主要是在伺服器上運作,減少對客戶機的壓力。
6、存儲過程可以包含程式流、邏輯以及對資料庫的查詢。同時可以實體封裝和隐藏了資料邏輯。
7、存儲過程可以在單個存儲過程中執行一系列SQL語句。
8、存儲過程可以從自己的存儲過程内引用其它存儲過程,這可以簡化一系列複雜語句。
例子:
-- 顯示資料庫中所有的存儲
show PROCEDURE status;
-- 檢視某個存儲過程
show create procedure sp1
--删除存儲過程
drop PROCEDURE sp1
-- 建立存儲過程
create PROCEDURE sp1() select * from h_hub_status
-- 執行存儲過程
CALL sp1()
四,視圖。
1,簡單:使用視圖的使用者不需要關系視圖中資料怎麼查詢得到的,視圖中的資料對使用者來說已經是過濾好的符合條件的結果集;
2,安全:使用視圖的使用者隻能通路他們被允許查詢的結果集,對表的權限管理并不能限制到某個列或某個行,但是通過視圖可以簡單實作;
3,資料獨立;一旦視圖的結構确定了,可以屏蔽表結構變化對使用者的影響,原表增加列對視圖沒有影響;源表修改列名,則可以通過修改視圖來解決,不會造成對通路者的影響。
視圖操作
視圖的操作包括建立視圖、檢視視圖、删除視圖和修改視圖。
例子:
create view view_test as select * from tn_admin //建立視圖
create or replace view view_test as select * from tn_lock //修改視圖
desc view_test /show fields from view_test //檢視視圖結構
轉載于:https://my.oschina.net/u/3290532/blog/858753