mysql
外掛程式式儲存引擎的資料庫
儲存引擎: 儲存方式 [磁碟]
1.myisam
不支援外來鍵,不支援事務
支援全文索引,底層用b+樹;
支援表鎖;
2.innodb
支援外來鍵,支援事務;
不支援全文索引,底層用b+樹;
支援行鎖;
3.memory
資料存在記憶體上,讀寫效率高,適合儲存臨時表資料;/*不考慮資料安全*/[從幾個表中拼接出來的臨時表];
支援索引,底層雜湊索引;
varchar == char;
不支援text、bolb型別字段;
[文字] 太大佔記憶體空間;
4.archive
歸檔儲存引擎 1:10 的預設比例進行壓縮後儲存;
適用資料量大、查詢少的資料。
日誌資料: 記錄整個執行過程中的每乙個操作,無論正常異常操作。
//只支援 insert select 操作;
//索引
1.資料結構
2.全文索引 索引的一種方式,根據該索引建立欄位的屬性劃分;
//事務
一組sql語句的集合
四個原則
a 原子性 要麼全部執行成功,要麼全部執行失敗;
c 一致性 保證完整性約束;
i 隔離性 消除事物之間的相互影響;
d 永續性 事務執行的結果在磁碟上永久儲存;
//鎖機制
表鎖 鎖定整張表
行鎖 鎖定整行
1.myisam 資料和索引分離開來設計、 0非聚集索引
b+樹; (搜尋樹、多路排序樹)
《葉結點放資料位址》
// create index index_1 on student(id);
建立表更改儲存引擎
create table student
( id int primary key,
name varchar(15) not null,
age int default 18
)engine = myisam;
explain select * from stu where id = 6; √ 使用索引
explain select * from stu where name = "lisi"; ×
2.innodb 索引當場資料一部分儲存、 0聚集索引 資料相對集中
b+樹;
《葉結點放資料》
資料的儲存依賴索引;但
create table stu(id,name,***,age);
insert into ()()()(); 預設為innodb,但沒有設定索引,仍可以插入資料成功;
系統建立索引的規則:
1.查詢是否存在主鍵,存在即建立主鍵索引;
2.查詢是否存在唯一鍵,存在即建立唯一索引;
3.如果上述都沒有,系統新增隱藏字段(6個位元組)建立索引;
隱藏字段看不見如何插入資料?auto_increment 新增資料會自動+1;
在innodb中儲存資料的索引主索引,主索引不允許關鍵字重複;
輔助索引是在葉結點不儲存資料,儲存主索引的索引值; 輔助索引查詢 2 次,先查詢輔助索引,然後找到主索引,再查詢相對應的資料;
索引的優化; 《空間換時間》
1.那種情況建立索引
1)經常被查詢的字段
2)用於主鍵字段
3)用於連線的字段 比如 學生資訊表 成績表 的 id 字段,提供多表查詢的查詢效率
4)範圍查詢
5)經常用於排序處理的字段
6)經常用來 where 過濾的字段
2.那種情況不應該建立索引
1)不經常用於查詢的字段
2)數值較少的字段 比如 性別字段
3)數值較多,資料量大的字段 比如 bolb型別或者text型別字段
4)修改操作大於查詢操作的字段
索引的分類:
1.普通索引 基於普通字段建立 索引的注意事項:
1)索引項不會包含null值;
2)使用短索引;
3)索引列排序;
4)like操作
第乙個字母是通匹,不會用到索引
5)不要在索引項上進行計算;
Exchange資料庫整理
要進行離線碎片整理的話只需要將資料庫置於離線狀態並執行eseutil命令,並且加上引數 d即可。在exchange2000中,eseutil程式在exchange 2000的安裝光碟的 support utils目錄下。而在exchange 2003中,安裝程式會自動將eseutil安裝至伺服器硬碟...
mysql資料庫整理
mysql做分頁查詢 1 select from tablename limit 5,10 檢索記錄行6 10 2 為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 1 select from tablename limit 10,1 檢索記錄行11到末尾 3 如果只給定乙個引...
資料庫鎖整理
在了解資料庫索引之前,首先了解一下資料庫索引的資料結構基礎,b tree b tree是乙個n叉樹,每個節點有多個葉子節點,一顆b 樹包含根節點,內部節點,葉子節點。根節點可能是乙個葉子節點,也可能是乙個包含兩個或兩個以上葉子節點的節點。b tree的性質 n棵子tree的節點包含n個關鍵字,不用來...