为什么mysql要额外加入一个utf8mb4数据类型,而不是原地升级utf8

首页 / 常见问题 / 低代码开发 / 为什么mysql要额外加入一个utf8mb4数据类型,而不是原地升级utf8
作者:低代码开发工具 发布时间:10-25 13:58 浏览量:7098
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

mysql要额外加入一个utf8mb4数据类型,而不是原地升级utf8的原因:在Unicode标准中,有一些字符需要使用四字节长的编码方式来表示,而原来的utf8编码无法支持这样的字符,所以增加了一种名为utf8mb4的字符集用来支持这些四字节长的字符。

一、mysql要额外加入一个utf8mb4数据类型,而不是原地升级utf8的原因

MySQL中原来的utf8编码是一种三字节长的字符串编码方式,而在Unicode标准中,有一些字符需要使用四字节长的编码方式来表示,而原来的utf8编码无法支持这样的字符。因此,MySQL在5.5版本中增加了一种名为utf8mb4的字符集,用来支持这些四字节长的字符。

utf8mb4实际上是一种可以存储来自现代Unicode标准中的所有字符的编码方式,其字节长度为1到4个字节,因此可以支持Unicode编码的全部字符和表情符号。升级utf8字符集可能会导致现有的编码数据被解释为错误的字符,这会给现有的应用程序带来很大的困扰。因此,在MySQL中增加了utf8mb4这种编码方式来支持四字节长的字符,可以让旧版的应用程序继续使用原来的utf8编码,而新的应用程序可以使用utf8mb4编码来支持更多的字符。

需要注意的是,在MySQL中使用utf8mb4编码时,它的存储方式是与utf8编码不同的。使用utf8mb4编码的字符串需要消耗更多的存储空间,这也需要在应用程序设计时考虑到它可能会占用更多的存储空间。

二、mysql介绍

1、简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

2、应用环境

与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。

Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP”或“LNMP”组合。

3、系统特性

  • MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性
  • 支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
  • 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和 Tcl 等
  • 支持多线程,充分利用 CPU 资源
  • 优化的 SQL查询算法,有效地提高查询速度
  • 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中
  • 提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名
  • 提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径
  • 提供用于管理、检查、优化数据库操作的管理工具
  • 支持大型的数据库,可以处理拥有上千万条记录的大型数据库
  • 支持多种存储引擎
  • MySQL 是开源的,所以你不需要支付额外的费用
  • MySQL 使用标准的 SQL数据语言形式
  • MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言
  • MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统
  • 在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)
  • 复制全局事务标识,可支持自我修复式集群(5.6新增)
  • 复制无崩溃从机,可提高可用性(5.6新增)
  • 复制多线程从机,可提高性能(5.6新增)
  • 3倍更快的性能(5.7新增)
  • 新的优化器(5.7新增)
  • 原生JSON支持(5.7新增)
  • 多源复制(5.7新增)
  • GIS的空间扩展(5.7新增)

4、查询和索引

只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完名列前茅条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快–不管有没有使用索引。只有当数据库里的记录超过了 1000 条、数据总量也超过了 MySQL 服务器上的内存总量时,数据库的性能测试结果才有意义。

在不确定应该在哪些数据列上创建索引的时候,人们从 EXPLAIN SELECT 命令那里往往可以获得一些帮助。这其实只是简单地给一条普通的 SELECT 命令加一个 EXPLAIN 关键字作为前缀而已。有了这个关键字,MySQL 将不是去执行那条 SELECT 命令,而是去对它进行分析。MySQL 将以表格的形式把查询的执行过程和用到的索引等信息列出来。

在 EXPLAIN 命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。type列指定了本数据表与其它数据表之间的关联关系(JOIN)。在各种类型的关联关系当中,效率较高的是 system,然后依次是 const、eq_ref、ref、range、index 和 All(All 的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍——这种情况往往可以用一索引来避免)。

possible_keys 数据列给出了 MySQL 在搜索数据记录时可选用的各个索引。key 数据列是 MySQL 实际选用的索引,这个索引按字节计算的长度在 key_len 数据列里给出。比如说,对于一个 INTEGER 数据列的索引,这个字节长度将是4。如果用到了复合索引,在 key_len 数据列里还可以看到 MySQL 具体使用了它的哪些部分。作为一般规律,key_len 数据列里的值越小越好。

ref 数据列给出了关联关系中另一个数据表里的数据列的名字。row 数据列是 MySQL 在执行这个查询时预计会从这个数据表里读出的数据行的个数。row 数据列里的所有数字的乘积可以大致了解这个查询需要处理多少组合。

最后,extra 数据列提供了与 JOIN 操作有关的更多信息,比如说,如果 MySQL 在执行这个查询时必须创建一个临时数据表,就会在 extra 列看到 usingtemporary 字样。

延伸阅读1:mysql的管理工具

可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin),也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。phpMyAdmin是由 php 写成的 MySQ L资料库系统管理程程序,让管理者可用 Web 界面管理 MySQL 资料库。phpMyBackupPro也是由 PHP 写成的,可以透过 Web 界面创建和管理数据库。它可以创建伪 cronjobs,可以用来自动在某个时间或周期备份 MySQL 数据库。另外,还有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

什么是外向潜在客户开发
10-30 10:47
产品开发过程的阶段有哪些
10-30 10:47
伊利新产品开发团队怎么样
10-30 10:47
网站开发图标怎么设置
10-30 10:47
如何组建it开发团队
10-30 10:47
开发商团队视频怎么拍好看
10-30 10:47
公司用什么系统开发的
10-30 10:47
系统开发选什么专业好呢
10-30 10:47
什么为嵌入式系统开发
10-30 10:47

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流