zoukankan      html  css  js  c++  java
  • MySQL——如何选择合适的字符集?

    对于数据库来说,字符集更加重要,因为数据库存储的大部分都是各种文字,字符集对数据库的存储,处理性能以及日后系统的移植,推广都会有影响。主要考虑因素有:

    • 满足应用支持语言的需求,如果应用要处理各种各样的文字,或者需要发布到使用不同语言的国家或者地区,应该选择Unicode,对于MySQL来说,目前就是UTF-8.
    • 如果应用中涉及已有数据的导入,就要充分考虑字符集对已有数据的兼容。
      如果数据库只需要支持一般中文,数据量很大,性能要求也很高,那就应该选择双字节的中文字符集,相对于UTF-8而言GBK比较节省空间,减少磁盘IO,数据库cache以及网络传输时间,从而提高性能,如果仅有少量数据那么选择UTF-8更好。
    • 如果数据库需要做大量的字符运算,如比较,排序等,选择定长字符集可能更好,处理速度会更快
    • 如果所有客户端程序都支持相同的字符集,应该有限选择该字符集作为数据库字符集,可以避免因字符级转换带来的性能开销和数据损失。

    查看所有可用的字符集的命令是:

    show character set

    MySQL字符集的设置
    MySQL的字符集和校对规则有4个级别的默认设置

    • 服务器级
    • 数据库级
    • 表级
    • 字段级

    服务器字符集和校对规则
    服务器字符集和校对在MySQL服务启动时确定
    可以在my.cnf中设置:

    [mysql]
    default-character-set=gbk
    

    或者在启动选项中指定:

    mysql--default-character-set=gbk;
    

    可以使用命令查询当前服务器的字符集和校对规则

    show variables like'character_set_server'
    
    show variables like 'collation_server'
    

    数据库字符集和校对规则
    在创建数据库时指定,也可以在创建完数据库后通过

    alter database

    进行修改,如果数据库里面已经存在数据,那么修改字符集以后并不能将已有的数据按照新的字符集进行存放,不能通过修改字符集直接修改数据的内容。

    设置数据库字符集的规则是:
    如果指定了字符集和校对规则,则使用指定的,如果只指定了字符集,没有指定校对规则,则使用该字符集默认的校对规则,如果两者都没有指定,则使用服务器的字符集和校对规则。

    要显示当前数据库的字符集和校对规则,可以使用下列命令

    show variables like'character_set_database'
    show variables like 'collation_database'
    

    表和列的字符集规则用到的较少,不在详述。

  • 相关阅读:
    【MSSQL】MSSQL还原单mdf文件报1813错误
    【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
    【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令
    【Other】U盘FAT32转NTFS且无数据丢失
    python map()
    python关于分割与拼接的那些事
    python shutil.copy()用法
    python enumerate用法
    工作中遇到一些难题1_5
    廖雪峰读书笔记_文件读写总结_2016_12_23
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309477.html
Copyright © 2011-2022 走看看