mysql varchar到底能存多少字符。


utf8編碼的varchar

  Mysql記錄行數據是有限的。大小為64k,即65535個字節,而varchar要用1-2字節來存儲字段長度,小於255的1字節,大於255的2字節。
  Mysql 5.0后,英文字符固定都是一個字節,漢字字符根據編碼方式占不同字節,Utf-8占3個字節,gbk占了2個字節。
  第一,當編碼方式為utf-8時,varchar存到21845就存不下了.也就是最大長度是21844.根據上面信息可以推算出 ( 65535-2 )/3=21844余1
  例子如下:
  aaa

   aaa

GBK編碼的varchar

  當編碼格式為GBK時,varchar能存多少字符呢?經過推理可知大約能存32766個字符,(65535-2)/2=32766余1。
  那么看看實驗結果如下:
 aaa

   aaa

為何提出這個問題?

  前段時間一個哥們提bug,要把備注等字段全部最大大小設置為1000,甚至更多,這個表的字段本身就已經很多了,而我們設計表時一般都默認使用utf8這個編碼格式,那么一個漢字就占了3個字節,故一個行記錄的長度就會短了些,數據占用存儲資源也會多了些,然后修改的時候成功的報了row size too large的這個錯誤。這里提出來也是為了讓大家注意下。

總結

  設計表的時候不同的編碼格式會導致varchar的最大值發生變化,varchar(數值),這個數值指的是字符數,也可以說是一個字,但是不是字節,當然存儲的數據還是一個英文占一個字節,一個漢字根據編碼格式占不同字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM