1. 程式人生 > >《mysql技術內幕》讀書筆記

《mysql技術內幕》讀書筆記

第2章 使用sql管理資料

2.6 索引表

  1. 唯一索引
    單列不允許有重複值出現,多列(符合)索引,不允許出現重複的組合值。
  2. 常規(非唯一性)索引
    可以獲得索引的好處,但會出現重複值的情況。
  3. fulltext索引
    可用於完成全文檢索
  4. spatial索引
    只適用於包含空間值的myisam表
  5. hash索引
    memory表的預設索引型別,可以通過建立btree索引來改寫它

可以在使用create table語句建立新表時,包含索引定義。
為已有表新增索引,則可以使用語句alter tablecreate indexalter table語句比create index

語句更靈活多變,因為它可以用來建立mysql所支援的任何一種索引。例如:

alter table tbname add index indx_name (index_columns);
alter table tbname add unique ......
alter table tbname add primary key ...(列不允許為null)
alter table tbname add fulltext ...
alter table tbname add spatial ...(列不允許為null)
create index index_name on tbl_name (index_columns);
create unique ...;
create fulltext ...;
create spatial ...;

這種方式不能省略index_name。
memory 表的預設索引型別是hash,雜湊索引對於精確值的查詢速度非常快,但用於範圍比較,可以使用btree索引來代替它。實現方式是在索引定義裡增加using btree子句。

create table addresslist
(
id int not null,
name char(100),
index (id) using btree
) engine=memory;

如果只想對字串列的字首建立索引,那麼在索引定義裡為該列命名的語法是col_name(n),n表示的是,索引應該包括列值的前n個位元組(二進位制串型別)或前n個字元(非二進位制串型別)。

create table addresslist
(
name char(30) not null,
address binary(60) not null,
index (name(10)),
index (address(15))
);

可以使用drop indexalter table語句刪除索引,如果要使用drop index語句,必須給出那個要被刪除的索引的名字:

drop index index_name on tbl_name;

而刪除primary key,必須使用待引號識別符號的形式給指定名字primary。

drop index `primary` on tbl_name;

前面的語句等價於:

alter table tbl_name drop index index_name;
alter table tbl_name drop primary key;

第11章 mysql資料目錄

檢視資料目錄所在路徑

在後臺輸入命令:
mysqld --verbose --help | grep dir
在mysql聯結器後臺輸入命令:
show variables like 'datadir';

mysql管理的每個資料庫都以資料目錄的子目錄形式存在。

第14章 資料庫維護、備份和複製

一、把資料庫備份為一個檔案或一組檔案

  1. 建立轉儲檔案:
mysqldump --databases sampdb > sampdb.sql
  1. 將轉儲檔案複製到遠端主機:
scp sampdb.sql server-ip:/tmp
  1. 登陸遠端主機,將轉儲檔案載入到他的mysql伺服器裡:
mysql < /tmp/sampdb.sql

二、通過網路把資料庫從一個伺服器直接轉儲到另一個伺服器,無需任何中間檔案。(這種方法很難實驗成功)

mysqldump --databases sampdb | mysql -h server-ip