選擇原則,根據(jù)選定的存儲引擎,確定如何選擇合適的數(shù)據(jù)類型,下面的選擇方法按存儲引擎分類 :
MyISAM 數(shù)據(jù)存儲引擎和數(shù)據(jù)列MyISAM數(shù)據(jù)表,最好使用固定長度的數(shù)據(jù)列代替可變長度的數(shù)據(jù)列 。
MEMORY存儲引擎和數(shù)據(jù)列MEMORY數(shù)據(jù)表目前都使用固定長度的數(shù)據(jù)行存儲,因此無論使用CHAR或VARCHAR列都沒有關(guān)系 。兩者都是作為CHAR類型處理的 。InnoDB 存儲引擎和數(shù)據(jù)列建議使用 VARCHAR類型對于InnoDB數(shù)據(jù)表,內(nèi)部的行存儲格式?jīng)]有區(qū)分固定長度和可變長度列(所有數(shù)據(jù)行 都使用指向數(shù)據(jù)列值的頭指針),因此在本質(zhì)上,使用固定長度的CHAR列不一定比使 用可變長度VARCHAR列簡單 。因而,主要的性能因 是數(shù)據(jù)行使用的存儲總量 。由于 CHAR 平均占用的空間多于VARCHAR,因此使用VARCHAR來最小化需要處理的數(shù)據(jù)行的存儲總量和年盤I/O是比較好的 。6.聊聊Mysql字符集!mysql服務(wù)器可以支持多種字符集(可以用show character set命令查看所有mysql支持的字符集),在同一臺服務(wù)器、同一個數(shù)據(jù)庫、甚至同一個表的不同字段都可以指定使用不同的字符集,相比oracle等其他數(shù)據(jù)庫管理系統(tǒng),在同一個數(shù)據(jù)庫只能使用相同的字符集,mysql明顯存在更大的靈活性 。
mysql的字符集包括字符集(CHARACTER)和校對規(guī)則(COLLATION)兩個概念 。字符集是用來定義mysql存儲字符串的方式,校對規(guī)則則是定義了比較字符串的方式 。字符集和校對規(guī)則是一對多的關(guān)系, MySQL支持30多種字符集的70多種校對規(guī)則 。
每個字符集至少對應(yīng)一個校對規(guī)則 。可以用SHOW COLLATION LIKE ‘utf8%’;命令查看相關(guān)字符集的校對規(guī)則
7.如何選擇字符集?對數(shù)據(jù)庫來說,字符集更加重要,因為數(shù)據(jù)庫存儲的數(shù)據(jù)大部分都是各種文字,字符集對數(shù)據(jù)庫的存儲,處理性能,以及日后系統(tǒng)的移植,推廣都會有影響 。mysql5.6目前支持幾十種字符集,包括ucs2,utf16,utf16le,utf32,utf8和utf8mb4等Unicode字符集 。根據(jù)應(yīng)用的需求,考慮以下幾方面的因素 。
滿足應(yīng)用支持語言的需求,如果應(yīng)用要處理各種各樣的文字,或者將發(fā)布到使用不同語言的國家或地區(qū),就應(yīng)該選擇Unicode字符集 。對Mysql來說,目前就是utf8,如果要存儲emoji表情需使用utf8mb4 。如果應(yīng)用中涉及已有數(shù)據(jù)的導入,就要充分考慮數(shù)據(jù)庫字符集對已有數(shù)據(jù)的兼容性 。假如已有數(shù)據(jù)是gbk文字,如果選擇gb2312-80為數(shù)據(jù)庫字符集,就很有可能出現(xiàn)某些文字無法正確導入的問題如果數(shù)據(jù)庫只支持一般中文,數(shù)據(jù)量很大,性能要求也很高,那就應(yīng)該選擇雙字節(jié)長編碼的中文字符集,比如gbk 。因為,相對于utf8而言,gbk比較“小”,每個漢字只占2個字節(jié),而utf8漢字編碼需要3個字節(jié),這樣可以減少磁盤I/O,數(shù)據(jù)庫Cache以及網(wǎng)絡(luò)傳輸?shù)臅r間,從而提高性能 。相反,如果應(yīng)用主要處理英文字符,僅有少量漢字數(shù)據(jù),那么選擇utf8更好,因為gbk,ucs2,utf16的西文字符編碼都是2個字節(jié),會造成很多不必要的開銷 。如果數(shù)據(jù)庫需要做大量的字符運算,如比較,排序等,那么選擇定長字符集可能更好,因為定長字符集的處理速度要比變長字符集的處理速度快 。如果所有客戶端程序都支持相同的字符集,則應(yīng)該優(yōu)先選擇該字符集作為數(shù)據(jù)庫字符集,這樣可以避免因字符集轉(zhuǎn)換帶來的性能開銷和數(shù)據(jù)損失 。建議在能夠完全滿足應(yīng)用的前提下,盡量使用小的字為集 。因為更小的字為集意味著能夠節(jié)省空間然 減少網(wǎng)絡(luò)傳輸字節(jié)數(shù),同時由于存儲空間的較小間接的提高了系統(tǒng)的性能 。
8.如何查詢最后一行記錄?select*fromlinksorderbyiddesclimit1;9.sql注入問題?SQL注入攻擊(SQL Injection),簡稱為注入攻擊,SQL注入,被廣泛用于非法獲取網(wǎng)站控制權(quán) 。這是在應(yīng)用程序的數(shù)據(jù)庫層中發(fā)生的安全漏洞 。在設(shè)計程序中,忽略了對輸入字符串中包含的SQL命令的檢查,并且將數(shù)據(jù)庫誤認為是要運行的常規(guī)SQL命令,這導致數(shù)據(jù)庫受到攻擊,從而可能導致盜竊,修改和刪除數(shù)據(jù),并進一步導致網(wǎng)站嵌入惡意代碼,植入后門程序的危害等 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 武漢長江大橋漢陽橋頭電梯開了嗎2021
- 成都有山姆超市嗎
- 2021拼搏勵志語錄(關(guān)于2021拼搏勵志語錄
- 京東2021雙十一活動幾號開始幾號結(jié)束
- 2021肯德基萬圣節(jié)海綿寶寶玩具有幾款
- 2021年春分是幾月幾日 春分是立春嗎
- 2021年全國取消禁摩令 摩托車京a牌照多少錢
- 健身教練證怎么考 樂刻健身教練培訓多少錢
- 2021單人玩職業(yè)推薦 暗黑3攻略心得
- 考試成績猜一個數(shù)學名詞 成績是多少打一數(shù)字
