略懂MySQL字符集_MySQL
bitsCN.com
略懂MySQL字符集
本文虽说旨在明白、但若略懂亦可、毕竟诸葛孔明如是
只有基于字符的值才有所谓字符集的概念
某些字符集可能需要更多CPU、消费更多的内存和磁盘空间、甚至影响索引使用
这还不包括令人蛋碎的乱码、
可见、我们还是有必要花点时间略懂下MySQL字符集
先直观认识各阶梯下显示使用字符集:
[sql] # 囊括三个层级:DB、Table、Column mysql> create database d charset utf8; Query OK, 1 row affected (0.04 sec) mysql> create table d.t -> (str varchar(10) charset latin1) -> default charset=utf8; Query OK, 0 rows affected (0.05 sec)
那如果没有显示指定?MySQL是如何设置?路分两条:
① 创建对象时的默认设置
这是个逐层继承的默认设置:
Server → DB → Table → Column
高层为底层设置默认值、底层可遵可弃、
没有指定字符集、谓之可遵
显示指定字符集、谓之可弃
② 服务器和客户端通信时的设置
当客户端提交一条SQL到MySQL时、MySQL Server总是假定客户端字符集是character_set_client
其后、Server把character_set_client转为character_set_connection进行SQL处理、
在返回结果集给客户端时、Server又将character_set_connection转为character_set_result、然后返回
以上涉及的三个字符集、我们可以通过set names 一次搞定
字符集之间的相互转换是需要额外的系统开销的、
如何知道?
explain extended + show warnings 即可
那该如何尽量避免这种隐式转换?
这里介绍一种被称为"极简原则"的方法、如下:
先为服务器(或数据库)选择合适的字符集、然后依据业务、让某些列选择合适的字符集
在MySQL字符集中隐含了些意外惊喜、主要有三:
① 有趣的character_set_database
当character_set_database和character_set_server不同时、库的默认字符集由后者决定
你不能直接修改csd、改变css就改变了csd、因为csd和库默认字符集相同、
改变库默认字符集、csd就随之改变、而css决定库的默认字符集
所以、当连接到mysql实例、又没有指定库时、默认字符集与css相同
② load data infile
进行此操作时、建议最佳实践如下:
use 库;
set names 字符集;
开始加载数据;
这就使用统一字符集、避免混搭的"字符集style"
③ select into outfile
该行为没有进行任何转码操作!
有人说、不管37二十一、全用utf8、整个世界都清净了
但这不仅消耗更多磁盘空间、也带来一定性能牺牲
为什么?因为utf8是多字节字符集、比如一个汉字是三个字节
这会带来两方面的问题:
① 浪费空间、如char(10)可能会开辟30字节空间、即使不需要
② 索引长度限制、mysql总是假定一个字符三个字节、导致最长索引长度变成1/3
行文至此、大意已明、后续想到、再续前缘
bitsCN.com
热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

飞行模式别人打电话会怎么样手机已经成为人们生活中必不可少的工具之一,它不仅仅是通信工具,还是娱乐、学习、工作等多种功能的集合体。随着手机功能的不断升级和改进,人们对于手机的依赖性也越来越高。在飞行模式出现后,人们可以更方便地在飞行中使用手机。但是,有人担心在飞行模式下别人打电话的情况会对手机或者使用者产生什么样的影响呢?本文将从几个方面来进行分析和讨论。首先

在VirtualBox中尝试打开磁盘映像时,可能会遇到错误提示,指示硬盘无法注册。这种情况通常发生在您尝试打开的VM磁盘映像文件与另一个虚拟磁盘映像文件具有相同的UUID时。在这种情况下,VirtualBox会显示错误代码VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)。如果您遇到这个错误,不必担心,有一些解决方法可以尝试。首先,您可以尝试使用VirtualBox的命令行工具来更改磁盘映像文件的UUID,这样可以避免冲突。您可以运行命令`VBoxManageinternal

本文转载自微信公众号「活在信息时代」,作者活在信息时代。转载本文请联系活在信息时代公众号。在机器学习中,一个基础的概念就是如何判断两个样本之间的差异,从而能够评价两个样本之间的相似性和类别等信息。而判断这种相似性的度量就是两个样本在特征空间内的距离。根据数据特征的不同,度量方法有很多种。一般而言,对两个数据样本x,y,定义一个函数d(x,y),如果定义其为两个样本之间的距离,那么d(x,y)则需要满足以下几条基本性质:非负性:d(x,y)>=0同一性:d(x,y)=0 ⇔ x=y对

Java是一种常用的编程语言,用于开发各种应用程序。然而,就像其他编程语言一样,Java也存在安全漏洞和风险。其中一个常见的漏洞是文件包含漏洞(FileInclusionVulnerability),本文将探讨文件包含漏洞的原理、影响以及如何防范这种漏洞。文件包含漏洞是指在程序中通过动态引入或包含其他文件的方式,但却没有对引入的文件做充分的验证和防护,从

众所周知,如果系统安装完成后占用系统盘太大,可能会导致系统运行卡顿、延迟,甚至是文件丢失。因此大家在安装win11系统之前,需要了解升级win11需要多大C盘空间,下面就跟着小编一起来看看吧。升级win11需要多大C盘空间:答:升级win11需要20-30GB的C盘空间。1、根据微软的win11配置要求可以看到,win11安装需要64GB的硬盘空间。2、但其实一般来说是不需要这么大的空间的。3、根据已经安装win11的用户反馈,win11升级大概需要20-30GB的C盘空间。4、但是如果我门只有

数据稀缺对模型训练的影响问题,需要具体代码示例在机器学习和人工智能领域,数据是训练模型的核心要素之一。然而,现实中我们经常面临的一个问题是数据稀缺。数据稀缺指的是训练数据的量不足或标注数据的缺乏,这种情况下会对模型训练产生一定的影响。数据稀缺的问题主要体现在以下几个方面:过拟合:当训练数据量不够时,模型很容易出现过拟合的现象。过拟合是指模型过度适应训练数据,

硬盘坏道是指硬盘的物理故障,即硬盘上的储存单元无法正常读取或写入数据。坏道对硬盘的影响是非常显着的,它可能导致数据丢失、系统崩溃和硬盘性能下降等问题。本文将会详细介绍硬盘坏道的影响及相关解决方法。首先,硬盘坏道可能导致数据丢失。当硬盘中的某个扇区出现坏道时,该扇区上的数据将无法读取,从而导致文件损坏或无法访问。这种情况尤其严重,如果坏道所在的扇区中存储了重要

c盘剩余空间50-80G比较合适。由于系统在日后使用当中会产生垃圾文件,缓存文件等因此建议至少预留50GB-80GB的空间给C盘;如果您不习惯在安装软件时选择路径,日常也不是经常清理电脑,那么至少需要100GB。
