Mysql數據庫介紹
MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標准
化的數據庫語言。MySQL是以一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和很多不同的
客戶程序和庫組成。
SQL是一種標准化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網站檢索
產品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。
MySQL 主要目標是快速、健壯和易用。最初是因為我們需要這樣一個SQL服務器,它能處理與任何可不昂
貴硬件平台上提供數據庫的廠家在一個數量級上的大型數據庫,但速度更快,MySQL就開發出來。自1996年以
來,我們一直都在使用MySQL,其環境有超過 40 個數據庫,包含 10,000個表,其中500多個表超過7百萬行
,這大約有100 個吉字節(GB)的關鍵應用數據。
Mysql數據庫特點
1. 使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)。
2. 可運行在不同的平台上。
3. 多種列類型:1、 2、 3、4、和 8 字節長度的有符號/無符號整數(INT)、FLOAT、DOUBLE、CHAR、
VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型。
4. 利用一個優化的一遍掃描多重聯結(one-sweep multi-join)非常快速地進行聯結(join)。
5. 在查詢的SELECT和WHERE部分支持全部運算符和函數。
6. 通過一個高度優化的類庫實現SQL函數庫並且像他們能達到的一樣快速,通常在查詢初始化後不應該有任
何內存分配。
7. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、
SUM()、 MAX()和MIN() )。
8. 支持ANSI SQL的LEFT OUTER JOIN和ODBC語法。
9. 你可以在同一查詢中混用來自不同數據庫的表。
10. 一個非常靈活且安全的權限和口令系統,並且它允許基於主機的認證。口令是安全的,因為當與一個服
務器連接時,所有的口令傳送被加密。
11. ODBC for Windiws 95。
12. 具備索引壓縮的快速B樹磁盤表。
13. 每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是 256 個字節(在
編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴。
14. 定長和變長記錄。
15. 用作臨時表的內存散列表。
16. 大數據庫處理。我們正在對某些包含 50,000,000 個記錄的數據庫使用MySQL。
17. 所有列都有缺省值,你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置為他們的缺省
值。
18. 一個非常快速的基於線程的內存分配系統。
19. 沒有內存漏洞。用一個商用內存漏洞監測程序測試過(purify)。
20. 包括myisamchk,一個檢查、優化和修復數據庫表的快速實用程序。
21. 全面支持ISO-8859-1 Latin1 字符集。
22. 所有數據以 ISO-8859-1 Latin1 格式保存。所有正常的字符串比較是忽略大小寫的。
23. DELETE、INSERT、REPLACE和UPDATE 返回有多少行被改變(受影響)。
24. 函數名不會與表或列名沖突。例如ABS是一個有效的列名字。對函數調用的唯一限制是函數名與隨後的
"("不能有空格。
25. 所有MySQL程序可以用選項--help或-?獲得聯機幫助。
26. 服務器能為客戶提供多種語言的出錯消息。
27. 客戶端使用TCP/IP 連接或Unix套接字(socket)或NT下的命名管道連接MySQL。
28. MySQL特有的SHOW命令可用來檢索數據庫、表和索引的信息,EXPLAIN命令可用來確定優化器如何解決一
個查詢。
MySQL服務器的啟動與停止
一、啟動服務器的方法
啟動服務器由三種主要方法:
1、 直接調用mysqld。
#./mysqld&
這可能是最不常用的方法,建議不要多使用。
2、調用safe_mysqld腳本,最好的方法。
#./safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &
3、調用mysql.server腳本。
safe_mysqld腳本安裝在MySQL安裝目錄的bin目錄下,或可在MySQL源代碼分發的scripts目錄下找到。
mysql.server腳本安裝在MySQL安裝目錄下的share/mysqld目錄下或可以在MySQL源代碼分發的support_files
目錄下找到。如果你想使用它們,你需要將它們拷貝到適當的目錄下mysql/bin下。
#./mysql.server start
Sun Solariys開機自動啟mysql的方法
寫一個啟動和關閉的批處理文件Web (在路徑/etc/init.d 下), 內容如下:
#!/bin/sh
OPT_=$1
case "$OPT_" in
start)
/bin/echo "$0 : (start)"
#
# Your service startup command goes here.
#
/usr/local/apache/bin/apachectl start
/home3/mysql/bin/safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &
# NOTE: Must exit with zero unless error is severe.
exit 0
;;
stop)
/bin/echo "$0 : (stop)"
#
# Your service shutdown command goes here.
#
/usr/local/apache/bin/apachectl stop
# NOTE: Must exit with zero unless error is severe.
exit 0
;;
*) /bin/echo
/bin/echo "Usage: $0 [start|stop]"
/bin/echo " Invalid argument ==> "${OPT_}""
/bin/echo
exit 0
;;
esac
確認此文件有可執行的權利
#chmod 500 web
#cd /etc/rc2.d
#ln -s ../init.d/web S99mysql
在系統啟動時,S99mysql腳本將自動用一個start參數調用。注意頭字母必須大寫。
二、停止服務器的方法
1、要手工停止服務器,使用mysqladmin:
#mysqladmin -u 用戶名 -p密碼 shutdown
2、 調用mysql.server腳本,最好的方法。
#./mysql.server stop
3、 直接殺掉OS的進程號
#kill -9 進程號
這可能是最不常用的方法,建議不要多使用。
要自動停止服務器,你不需做特別的事情。只需要加另外一個關閉程序。
#cd /etc/rc0.d
#ln -s ../init.d/web K01mysql
在系統啟動時,K01mysql腳本將自動用一個stop參數調用。
MySQL目錄結構和常用命令
一、 數據目錄的位置
這是默認的mysql目錄結構
bin info libexec share var
include lib man sql-bench
一個缺省數據目錄被編譯進了服務器,如果你從一個源代碼分發安裝MySQL,典型的缺省目錄為
/usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進制分發安裝則是
/usr/local/mysql/data。
作為一名MySQL管理員,你應該知道你的數據目錄在哪裡。如果你運行多個服務器,你應該是到所有數據目錄
在哪裡,但是如果你不知道確切的位置,由多種方法找到它:
1、使用mysqladmin variables從你的服務器直接獲得數據目錄路徑名。查找datadir變量的值,在Unix上,其輸出類似於:
%mysqladmin -u username -p***** variables
+----------------------+----------------------+
| variable_name | Value |
+----------------------+----------------------+
| back_log | 5 |
| connect_timeout | 5 |
| basedir | /var/local/ |
| datadir | /usr/local/var/ |
....
2、查找mysql運行的路徑
%ps -ef | grep mysqld
二、數據目錄結構
每個數據庫對應於數據目錄下的一個目錄。
在一個數據庫中的表對應於數據目錄下的文件。
數據目錄也包含由服務器產生的幾個狀態文件,如日志文件。這些文件提供了關於服