標籤:注意事項 nod size 變數 備份 mysq shu 環境 where
1.庫名、表名、欄位名必須使用小寫字母,“_”分割。
原因:
MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
1、資料庫名與表名是嚴格區分大小寫;
2、表的別名是嚴格區分大小寫;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變數名也是嚴格區分大小寫;
MySQL在Windows下都不區分大小寫。
所以在不同作業系統中為了能使程式和資料庫都能正常運行,最好的辦法是在設計的時候都轉為小寫,但是如果在設計的時候已經正常化大小寫了,那麼在Windows環境下只要對資料庫的配置做下改動就行了,具體操作如下:
在MySQL的設定檔中my.ini [mysqld]中增加一行 lower_case_table_names = 1
參數解釋:
0:區分大小寫
1:不區分大小寫
在 MySQL中,資料庫和表對就於那些目錄下的目錄和檔案。因而,作業系統的敏感性決定資料庫和表命名的大小寫敏感。這就意味著資料庫和表名在Windows 中是大小寫不敏感的,而在大多數類型的 Unix系統中是大小寫敏感的。奇怪的是列名與列的別名在所有的情況下均是忽略大小寫,而表的別名又是區分大小寫。
要避免這個問題,你最好在定義資料庫命名規則的時候就全部採用小寫字母加底線的組合,而不使用任何的大寫字母。
或者也可以強制以 -O lower_case_table_names=1 參數啟動mysqld(如果使用 --defaults-file=...\my.cnf參數來讀取指定的設定檔啟動 mysqld的話,你需要在設定檔的 [mysqld] 區段下增加一行lower_case_table_names=1)。這樣MySQL
將在建立與尋找時將所有的表名自動轉換為小寫字元(這個選項預設地在Windows 中為 1 ,在 Unix 中為 0。從 MySQL 4.0.2開始,這個選項同樣適用於資料庫名)。
2.建議使用InnoDB儲存引擎。
原因:
1.MyISAM
MyISAM是mysql5.1及之前版本的預設引擎,很久未被更新。
使用表級鎖, 如果資料量大,一個插入伺服器用戶端檔案鎖表後,其他請求都將阻塞。
支援全文索引
支援查詢快取
儲存表的總行數,使用count(*) 並且無where子句的時候可以很快返回結果,但是實際使用時基本不會無where子句
簡要:不支援事務安全
沒有交易記錄和分類,因此它只將資料寫入Linux檔案快取並希望能最終寫入磁碟。如果系統在這個過程中崩潰或者丟失一些資料,MyISAM表會經常出現無法啟動或者警告你需要修複表;它恢複資料的方法有限並且經常會遺失資料。另外,MyISAM也很難正確的備份,備份的時候通常需要鎖住整個系統的資料,這就意味著每天網站都要宕機或者無法使用一段時間。
MyISAM表允許在定期列中進行全文檢索索引,而InnoDB不支援(這個沒搞懂)
2.InnoDB
支援事務
支援行級鎖和表級鎖,能支援更多的並發量
mysql5.6版本開始支援 全文索引
查詢不加鎖,完全不影響查詢
Innodb會對每個表設定一個事務計數器,裡面儲存當前最大的事務ID.當一個事務提交時,InnoDB會使用MVCC中系統事務ID最大的事務ID跟新當前表的計數器.只有比這個最大ID大的事務能使用查詢快取,其他比這個ID小的事務則不能使用查詢快取.另外,在InnoDB中,所有有加鎖操作的事務都不使用任何查詢快取
簡要:支援事務安全
交易記錄記錄真正的資料庫事務,但更重要的是資料崩潰恢複和復原。基於 InooDB方式的IO,能給予更安全資料保護和更好效能表現
河邊的老牛
連結:http://www.jianshu.com/p/6b45b150bfbf
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
3.儲存精確浮點數必須使用DECIMAL替代FLOAT和DOUBLE。
4.建議使用UNSIGNED儲存非負數值。
5.建議使用INT UNSIGNED儲存IPV4。
原因:使用INTUNSIGNED而不是char(15)來儲存ipv4地址,通過MySQL函數inet_ntoa和inet_aton來進行轉化;Ipv6地址目前沒有轉化函數,需要使用DECIMAL或者兩個bigINT來儲存。例如:
create table t (
ip INT UNSIGNED
);
insert into t select INET_ATON(‘209.207.224.40‘);
select INET_NTOA(ip) from t;
6.整形定義中不添加長度,比如使用INT,而不是INT(4)。
長度與你存放的數值型的數的大小無關(參考http://www.cnblogs.com/echo-something/archive/2012/08/26/mysql_int.html)
MYSQL資料庫建表注意事項