表结构优化方式详解,玩转MySQL数据库

2023-06-09 0 1,023

序言

从今天开始本系列产品文章就带诸位爸爸妈妈自学资料库控制技术。资料库控制技术是Java开发中不可或缺的一部分知识文本。也是非常重要的控制技术。本系列产品讲义循序渐进,全面传授资料库体系。适于零基础的爸爸妈妈来自学。

概要大约【2083】字,不说废话,只讲能让你教给控制技术、明白原理的纯蔬果!责任编辑带有丰富事例及新闻标题音频,让你更好的理解和运用该文的控制技术概念,并能给你带来具备足够感悟的思索…

一.资料库内部结构强化

资料库的库表内部结构强化包涵很多文本,比如:表头类别强化、横向该户、水平该户、表南区、科艾麻等文本。下面就带诸位爸爸妈妈一起分析下具体文本。

1.表头类别强化

表头类别强化的目的是将表头类别设置得更科学合理许多,我们总结的规则如下:

尽可能将展毛头表述为NOT NULL约束,这时虽然在MySQL中含有常量的列很难展开查阅强化,NULL参值使检索以及检索的统计重要信息变得很复杂。对于只包涵特定类别的表头,能采用enum、set 等数据类别。值型表头的较为比数组的较为成本低得多,表头类别尽可能采用最小、最简单的数据类别。比如IP门牌号能采用int类别。尽可能采用TINYINT、SMALLINT、MEDIUMINT作为有理数类别而非INT,如果非负则加上UNSIGNED。但对有理数类别选定宽度,比如INT(11),没有任何用,因为选定的类别标记覆盖范围已经确定。VARCHAR的宽度只分配真正须要的空间。尽可能采用TIMESTAMP而非DATETIME,但TIMESTAMP只能则表示1970- 2038年,比DATETIME则表示的覆盖范围大得多,所以TIMESTAMP的值因夏令时间相同而相同。皮夏涅不要有太多表头,建议在20以上。科学合理的加入输入输出字段能提高查阅速度。

2.横向分拆表(横向研磨)

横向分拆按照表头展开分拆,其实就是把组成一行的多个列合二为一放在相同的附注,那些表具备相同的内部结构,分拆后的表具备更慢的列。比如用户附注的许多表头可能时常出访,能把那些表头放入三张UX21LI2677E。除此之外许多不时常采用的重要信息就能放入除此之外三张UX21LI2677E。

填入的这时候采用事务,也能保证两表的数据一致。优点也很明显,虽然分拆出来的三张表存在单对单的关系,须要采用输入输出表头,所以须要join操作方式。但是我们能在采用的这时候能分别取两次,这样的来说既能避免join操作方式,又能降低成本。

2.1分拆时机:

单展毛头过多,并且不须要一次性查阅返回展示到一个页面上。

2.2分拆方法:

一个页面须要展示的数据表头,尽可能放在三张附注.如果分拆成多个表,那么这多个表的关系是1:1:1:1……的关系。

2.3优点:

分拆后查阅皮夏涅性能得到提升,速度快。

2.4优点:

如果分拆后,须要查阅跨多张表的数据就会用到join连接查阅,查阅速度会比没分拆前慢。

3.水平分拆表(水平研磨)

水平分拆按照行展开分拆,常见的就是科艾麻该户。

以用户表为例,能取用户ID,然后对ID取10的余数,将用户均匀的分配进这0-9这10个附注。查找的这时候也按照这种规则,又快又方便。

有些表业务关联较为强,那么能采用按时间划分的。比如每天的数据量很大,须要每天新建三张表。这种业务类别就是须要高速填入,但是对于查阅的效率不太关心。表越大,填入数据所须要检索维护的时间也就越长。

3.1分拆时机:

MySQL皮夏涅大于500万条数据,就须要考虑水平该户,因为皮夏涅数据量越大查阅越慢,查阅效率成指数级下降。

3.2分拆方法:

根据业务分拆:

根据时间覆盖范围分拆,比如:订单数据,按照订单创建时间,一个月三张表。

按照区间分为分拆,比如:按照表自增id,1-300万条三张表。

按照业务分类分拆,比如:用户表按照男女分拆。

hash该户:

通过一个原始目标的ID或者名称通过一定的hash算法计算出数据存储表的表名,然后出访相应的表。普通hash算法和一致性hash算法均可。

一般企业利用工具来做水平该户:

服务端科艾麻该户: MyCat, corbar等。

客户端科艾麻该户: shardingJDBC, ShardingSphere等。

3.3优点:

提高了查阅效率,主要是在大量数据情况,提高了查阅的命中率。

3.4优点:

提高了复杂度.在数据量不大的情况,水平分表体现不出好处。

4.表南区

4.1目的

表南区给大家简明扼要的说就是大量数据操作方式,会有磁盘IO跟不上的情况,所以表南区,就是将保存在硬盘上的数据文件放在一块或者多块硬盘上,以提高资料库的IO性能。

南区适用于比如日志记录,查阅少。一般用于后台的数据报表分析。对于那些数据汇总需求,须要很多日志表去做数据聚合,我们能够容忍1s到2s的延迟,只要数据准确能够满足需求就能。

MySQL主要支持4种模式的南区:Range南区、List预表述列表南区,Hash 南区,Key键值南区。

4.2录入采用key键值南区

举个栗子:

表结构优化方式详解,玩转MySQL数据库

二.结语

最后在这里对责任编辑核心要点展开总结:

诸位爸爸妈妈须要熟练记住横向该户和水平该户的方案以及优优点,在合适的时机展开灵活采用。横向该户一定要慎用,用不好会造成表内部结构变得复杂化不利于查阅。

以上就是我们本篇的全部文本了,更多控制技术类问题,欢迎和我们一起沟通交流~

排序算法中的冒泡和选择排序区别,Java常见面试问题系列产品

存储引擎的概念及作用,畅享MySQL

SQL强化之EXPLAIN执行计划

畅享MySQL资料库之SQL强化之慢查阅

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务