MySQL varchar存储、字符集、排序规则、索引长度

MySQL varchar存储、字符集、排序规则、索引长度,第1张

由于历史原因,MySQL刚开始设计的时候,"天真的"认为使用3个字节就足够存储字符串了,因此将UTF-8进行阉割然而遇到复杂的汉字或者emoji表情等4字节的宽字符的时候,存储就会出现异常,因此在版本5.7.3开始引入utf8mb4,其表示为most bytes 4,即最多占用4个字节。

utf8mb4_unicode_ci是基于官方的Unicode规则进行排序和压缩,其算法相对负责,对于大部分的语言和字符集排序有着很高的准确率而uft8mb4_general_ci可以理解为一种为了提升速度的简化版Unicode规则,但由于它不完全遵循Unicode规则,在使用某种特定语言或者字符集时,会出现非预期的结果。

例:

总结:

UTF-8编码的字符可以是1-4个字节,但是在MySQL中最大只能存储3个字节。

在版本5.5开始引入innodb_large_prefix,其默认值为off,索引的前缀最大限制为767个字节;若值为on时(版本5.7.7开始作为默认值),最大限制为3072个字节。

总结:

在后期版本 innodb_large_prefix 将会被逐渐废弃并移除。从版本8.0开始,索引长度限制由表字段(row format)决定,若为DYNAMIC或COMPRESSED时,限制值为3072;为REDUNDANT或COMPACT时,限制值为767。且row_format=dynamic时,长度3072是基于innodb_page_size=16KB,随着innodb_page_size的值按比例增减,其索引前缀长度也响应减小,如若为8KB时,长度为1536,因此在限制索引长度时,需根据使用的MySQL版本以及相应的参数进行配置决定。

SQL没有数组这种类型,数组是一种数据结构的概念,跟关系型mysql数据存储持久化没有关系。

如果要将数组的内容存储的mysql中,如 arr[n][m]二维数组,你创建一个table arr, 列是 A B,循环数组的每个元素,然后存储到对应的表中的A B列。

当然怎么存储到数据库中看你自己的需要,可以存到一个字段中,用分隔符分开,倒是取出来的时候直接字符串split得到数组。

扩展资料:

系统特性:

1、mySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种 *** 作系统。

3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4、支持多线程,充分利用 CPU 资源。

5、优化的 SQL查询算法,有效地提高查询速度。

6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。

8、提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。

9、提供用于管理、检查、优化数据库 *** 作的管理工具。

10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

参考资料来源:百度百科-mySQL

照你的需求来看,可以有两种方式,一种是分表,另一种是分区 首先是分表,就像你自己所说的,可以按月分表,可以按用户ID分表等等,至于采用哪种方式分表,要看你的业务逻辑了,分表不好的地方就是查询有时候需要跨多个表。 然后是分区,分区可以将表分离在若干不同的表空间上,用分而治之的方法来支撑无限膨胀的大表,给大表在物理一级的可管理性。将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。分区的好处是分区的优点: 1 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍然可以使用; 2 减少关闭时间:如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,故能比整个大表修复花的时间更少; 3 维护轻松:如果需要重建表,独立管理每个分区比管理单个大表要轻松得多; 4 均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能; 5 改善性能:对大表的查询、增加、修改等 *** 作可以分解到表的不同分区来并行执行,可使运行速度更快; 6 分区对用户透明,最终用户感觉不到分区的存在。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8377640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存