博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL数据库字符集管理
阅读量:4171 次
发布时间:2019-05-26

本文共 2057 字,大约阅读时间需要 6 分钟。

MySQL数据库字符集管理

概述

MySQL 在整体架构上分为 Server 层和存储引擎层。

其中 Server 层,包括连接器、查询缓存、分析器、优化器、执行器等,存储过程、触发器、视图和内置函数都在这层实现。数据引擎层负责数据的存储和提取,如 InnoDB、MyISAM、Memory 等引擎。在客户端连接到 Server 层后,Server 会调用数据引擎提供的接口,进行数据的变更。

单点(Single),适合小规模应用,复制(Replication),适合中小规模应用,集群(Cluster),适合大规模应用。

字符集:是一套字符与字符编码的集合,用于显示一些抽象的符号

校验规则:字符集的排序规则

常用的字符编码有:

Ascii,gb2312, gbk, latin1, unicode, utf8是uni code万国码/统一码 的优化实现

一 查看MySQL字符集

MySQL 5.5.3之后增加了utfmb4字符编码,utf8mb4utf8的超集并完全兼容utf8,能够用四个字节存储更多的字符。例如emoji和一些不常用的汉字,如,这些需要四个字节才能编码的就不支持。utf8mb4对应的排序字符集有utf8mb4_unicode_ciutf8mb4_general_ci.

 

utf8mb4_unicode_ci和utf8mb4_general_ci的对比:

准确性:

utf8mb4_unicode_ci是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序

utf8mb4_general_ci没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。

但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。

性能

utf8mb4_general_ci在比较和排序的时候更快

utf8mb4_unicode_ci在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。

但是在绝大多数情况下发,不会发生此类复杂比较。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。

 

1.1查看服务器支持的字符集

show character set;

select * from information_schema.CHARACTER_SETS;

1.2 查看字符集的校对规则

show collation;

show collation like '%utf8%';

1.3 查看当前数据库的字符集

show variables like  'character%' ;

 

| character_set_client     | utf8                                                           

| character_set_connection | utf8                                                          

| character_set_database   | utf8        ##默认数据库的字符集                                                 

| character_set_filesystem | binary                                                        

| character_set_results    | utf8                                                          

| character_set_server     | utf8                                                           

| character_set_system     | utf8                                                          

| character_sets_dir       | /mysql/app/mysql-5.7.20-linux-glibc2.12-x86_64/share/charsets/

1.4 查看当前数据库的校对规则

show variables like  ‘collation%’ ;

| Variable_name        | Value           |

| collation_connection | utf8_general_ci |

| collation_database   | utf8_general_ci |

| collation_server     | utf8_general_ci |

 

utf8_ general_ ci: 不区分大小写的排序方式

utf8_ general_ cs:区分大小写的排序方式

utf8_ general_bin:二进制的排序方式

二 mysql字符集设置

重点:生产环境不要随便改,会出问题,下面的只针对没有数据的环境修改,比较安全。

2.1 服务器级别

临时更改:set global character_set_server=utf8;

2)永久修改:

修改my. cnf

[mysqld]

character-set-server=utf8

重启mysql生效

 

2.2 数据库级

1)临时更改:set global.character_set_server=utf8;

2)永久修改: alter database itpuxc character set utf8 collate utf8_general.ci;

 

2.3表级别

alter table itpuxc2 default charset utf8;

转载地址:http://txbai.baihongyu.com/

你可能感兴趣的文章
python 使用zip合并相邻的列表项
查看>>
python iter( )函数
查看>>
Python 迭代器(iterator)
查看>>
Python enumerate类
查看>>
leetcode 99 Recover Binary Search Tree (python)
查看>>
linux echo 向文件中追加信息
查看>>
区块链问与答
查看>>
css常用小知识点
查看>>
js常用小知识点
查看>>
Java常用小知识点
查看>>
开源Java诊断工具Arthas简单使用说明
查看>>
深入理解Mysql索引底层数据结构与算法(二)
查看>>
IDEA自动去掉无用的import
查看>>
js数字转换成汉字
查看>>
MySQL不同存储引擎底层真正存储结构
查看>>
MySQL存储引擎底层常见面试题
查看>>
MySQL Explain执行计划详解
查看>>
索引最佳实践具体实例
查看>>
临时关闭MySQL缓存
查看>>
HBase学习和使用
查看>>