首页 > 数据库 >MYSQL varchar和nvarchar一些学习

MYSQL varchar和nvarchar一些学习

时间:2023-12-25 11:00:13浏览次数:56  
标签:00 varchar 31 61 62 63 MYSQL nvarchar

MYSQL varchar和nvarchar一些学习


背景

先试用 utfmb3的格式进行一下简单验证

注意脚本都是一样的. 

create database  zhaobsh ; 
use zhaobsh ;
create table zhaobsh (zhaobshvarchar varchar(30),zhaobshnvarchar nvarchar(30)) ;
insert into zhaobsh values ('123abc','123abc') ;
insert into zhaobsh values ('abcd赵1234','abcd赵1234') ;
insert into zhaobsh values ('abcde한국12345','abcde한국12345') ;
insert into zhaobsh values ('abcde한국12345',N'abcde한국12345') ;

winhex的显示结果

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00010090            31 32 33 61 62  63 31 32 33 61 62 63 0B      123abc123abc 
000100A0   0B 00 00 00 18 00 31 00  00 00 02 D0 C4 00 00 00         1    心   
000100B0   3C A8 0E 81 00 00 0E A2  01 10 61 62 63 64 E8 B5   <?    ? abcd璧
000100C0   B5 31 32 33 34 61 62 63  64 E8 B5 B5 31 32 33 34   ?234abcd璧?234
000100D0   10 10 00 00 00 20 00 3B  00 00 00 02 D0 C5 00 00          ;    信  
000100E0   00 3C A8 13 82 00 00 02  D6 01 10 61 62 63 64 65    <??  ? abcde
000100F0   ED 95 9C EA B5 AD 31 32  33 34 35 61 62 63 64 65   頃滉淡12345abcde
00010100   ED 95 9C EA B5 AD 31 32  33 34 35 10 10 00 00 00   頃滉淡12345     
00010110   28 FF 5D 00 00 00 02 D0  C6 00 00 00 3C A8 14 81   (]    衅   <? 
00010120   00 00 00 8B 01 10 61 62  63 64 65 ED 95 9C EA B5      ? abcde頃滉?
00010130   AD 31 32 33 34 35 61 62  63 64 65 ED 95 9C EA B5   ?2345abcde頃滉?
00010140   AD 31 32 33 34 35                                  ?2345

需要注意 全新的一个数据库就见了一个表 会产生一个ibd文件
ibd文件大小为 112KB

这个存储的位置在 76页/136页
存储的位置也比较奇怪. 

MySQL的结果分析

1. 关于ASCII字符集
MySQL采用 utf8mb3的字符集时
不管是 varchar和nvarchar, 其实存储ASCII的编码 使用的位置和大小是完全一样的:
31 32 33 61 62  63 31 32 33 61 62 63
不会因为是 nvarchar 就浪费空间. 跟SQLServer的处理方式不一样. 

2. 关于中文汉字
61 62 63 64 E8 B5  B5 31 32 33 34 61 62 63  64 E8 B5 B5 31 32 33 34

因为 赵的 UTF8的编码为:
赵	Unicode (UTF-8)	utf-8	E8B5B5
这一点与SQLServer的存储页面是不一样的. SQLServer存储的是 unicode的具体数值:
赵	Unicode	utf-16	758D

3. 关于韩文:
61 62  63 64 65 ED 95 9C EA B5  AD 31 32 33 34 35 61 62  63 64 65 ED 95 9C EA B5 AD 31 32 33 34 35

可以看到 韩文的 
한국	Unicode (UTF-8)	utf-8	ED959CEAB5AD

varchar 和 nvarchar的存储其实是完全一样的. 

结论

MySQL的 nvarchar其实就是掩人耳目的
MySQL的nvarchar 其实就是 varchar的完全一样的一个别名

这一点PG数据库比较有操守, 觉得没必要有 nvarchar 就没有实现. 

SQLServer的国际化其实比 utf8字符集还要早 
而且是一个很重视商业和向前兼容的数据库. 
所以sqlserver的表现与PG和MySQL其实完全不一样.
SQLServer接纳utf8也很慢也非常晚. 

下一步需要验证一下 信创数据库的varchar和nvarchar的相关信息了. 

标签:00,varchar,31,61,62,63,MYSQL,nvarchar
From: https://www.cnblogs.com/jinanxiaolaohu/p/17925684.html

相关文章

  • MySQL 查看版本的 5 种方法
    mysql数据库查看版本号SELECTVERSION();linux查看版本号mysqld-Vmysql-version 方法一:登录MySQL每次通过mysql客户端连接服务器之后,都会显示一个欢迎信息,里面包含了服务器的版本:mysql-urootEnterpassword:******WelcometotheMySQLmonitor.Commandsend......
  • 第81讲:清理MySQL Binlog二进制日志的方式
    1.清理Binlog二进制日志的依据Binlog日志非常重要,但是占用的磁盘空间也很大,我们也需要定期的去清理二进制日志,在MySQL数据库中,提供了自动清理Binlog日志的参数,根据指定的天数,保留n天内的Binlog日志,也可以手动人为删除。在手动删除Binlog日志时,要切记不要使用rm-rf直接删除Binlog......
  • MySQL 主从故障排查
    MySQL主从复制是一种常见的数据库架构,用于提高数据库的可用性和性能。但是,在实际应用中,主从故障是难免的。本文详细介绍一套MySQL主从故障排查方案。一确认主从状态首先要确定主从复制的状态,可以通过执行以下命令来检查:1)SHOWMASTERSTATUS;命令用于显示主库的状态信息,包括以下列......
  • mysql开发包安装
    1.下载MySQL的yum源安装包,例如:wgethttp://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm2.安装yum源安装包,例如:sudoyumlocalinstallmysql57-community-release-el7-7.noarch.rpm3.安装mysql-community-devel-5.7.44,例如:sudoyuminstallmysql-community-d......
  • mysql读写分离
    一、简介MySQL读写分离是一种通过将数据库的读操作和写操作分配到不同的数据库服务器上来提高数据库性能和可扩展性的技术。这种架构的目标是通过分担数据库服务器的负载,提高系统的响应速度和可用性。下面是MySQL读写分离的一些基本概念和原理:读写分离概念:读操作:通常比写操作......
  • MySQL常用服务器状态命令(运维)
    查询当前服务器运行的进程方式一:查询正在运行的所有MySQL进程,包括进程ID、用户、主机、当前数据库、命令、时间等信息。showprocesslist;方式二:可以查询正在运行的所有MySQL进程,包括进程ID、用户、主机、当前数据库、命令、时间等信息,并且可以添加筛选条件及排序方式。s......
  • MySQL导入导出 —— mysqldump 简介及常见用法
    一、导出导出用户需要有导出对象的权限,例如导出表要有select权限、导出视图要有showview权限、导出触发器要有trigger权限、需要锁表时要有locktables权限等。如果dump文件中包含了GTID信息,则无法导入到未启用GTID的数据库(低于5.6.9版本的数据库不支持GTID,因此也无法导入到这......
  • mysql集群模式分析
    集群的好处高可用性:故障检测及迁移,多节点备份。可伸缩性:新增数据库节点便利,方便扩容。负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。集群要考虑的风险网络分裂:群集还可能由于网络故障而拆分为多个部分,每部分内的节点相互连接,但各部分之间的节点失去连接。脑裂......
  • Debian 安装 Mysql
    参考地址:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/1.下载aptRepohttps://dev.mysql.com/downloads/repo/apt/2.安装MysqlAptRepodpkg-imysql-apt-config_0.8.29-1_all.deb3.更新存储库包信息apt-getupdate4.安装Mysqlapt-get-yinstallmysql-s......
  • Linux 启动MySQL 报错:Status:“Server shutdown complete“ Error:13(权限不够)
    Status:“Servershutdowncomplete”Error:13(权限不够)我在银河麒麟V10系统中安装启动MySQL出现的一个错误:“Servershutdowncomplete”Error:13(权限不够),我在其他系统中没有遇到到。问题背景在国产化系统银河麒麟V10上尝试启动MySQL服务器时,可能会收到如下错误信息:Status:"Ser......