企业电子商务网站建设问题上海网站建站建设

diannao/2026/1/19 9:54:59/文章来源:
企业电子商务网站建设问题,上海网站建站建设,江西网站设计电话,免费个人简历模板网站最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。1. 选择优化的数据类型MySQL支持的数据类型有很多#xff0c;而如何选择出正确的数据类型#xff0c;对于性能是至关重要的。以下几个原则能够帮助确定数据类型#xff1a;更小的通常更好应尽可能… 最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。1. 选择优化的数据类型MySQL支持的数据类型有很多而如何选择出正确的数据类型对于性能是至关重要的。以下几个原则能够帮助确定数据类型更小的通常更好应尽可能使用可以正确存储数据的最小数据类型够用就好。这样将占用更少的磁盘、内存和缓存而在处理时也会耗时更少。简单就好当两种数据类型都能胜任一个字段的存储工作时选择简单的那一方往往是最好的选择。例如整型和字符串由于整型的操作代价要小于字符所以当在两者之间选择时选择整型通常能够获得更好的性能。尽量避免NULL当列可为NULL时对于MySQL来说在索引和值比较等方面需要做更多的工作虽然对性能的影响不是很大但也应尽量避免设计为可为NULL。除了以上原则在选择数据类型时需遵循的步骤首先确定合适的大类型例如数据、字符串、时间等然后再选择具体的类型。下面将讨论大类型下的一些具体类型首先是数字有两种类型整数和实数。1.1 整数类型整数类型和所占用的空间如下整数类型空间大小(bit)TINYINT8SMALLINT16MEDIUMINT24INT32BIGINT64整数类型所能存储的范围和空间大小有关-2^(N-1)至2^(N-1)-1其中N为空间大小的位数。整数类型具有UNSIGNED的可选属性当声明时表示不允许负数则存储范围变为0至2^(N)-1扩大了一倍。在MySQL中还可以为整数类型指定宽度例如INT(1)但这样的意义并不大并不会限制值的合法范围仍能存储-2^31至2^31-1的值所影响的是与MySQL的交互工具显示字符的个数。1.2 实数类型实数类型的对比如下实数类型空间大小(Byte)取值范围计算精度FLOAT4负数-3.4E38-1.17E-38非负数0、1.17E-38~3.4E38近似计算DOUBLE8负数-1.79E308-2.22E-308非负数0、2.22E-308~1.79E308近似计算DECIMAL与精度有关同DOUBLE精确计算从上面可以看出FLOAT和DOUBLE都有固定的空间大小但同时由于是使用标准的浮点运算所以只能近似计算。而DECIMAL则可以实现精确计算与此同时占用的空间会相较更大所耗费的计算开销也更多。DECIMAL所占空间大小与指定的精度有关例如DECIMAL(M,D)M为整个数字的最大长度取值范围为[1, 65]默认值为10D为小数点后的长度取值范围为[0, 30]且D M默认值为0。MySQL在存储DECIMAL类型时会作为二进制字符串存储每4个字节存9个数字当不足9位时数字的占用空间如下数字个数占用空间(Byte)1、213、425、637、84小数点前后将分别存储同时小数点也要占1个字节。下面举两个计算的例子DECIMAL(18, 9)整数部分长度为9占用4个字节。小数部分长度为9占用4个字节。同时加上小数点1个字节则总共占用9个字节。DECIMAL(20, 9)整数部分长度为14占用7(43)个字节。小数部分长度为9占用4个字节。同时加上小数点1个字节则总共占用12个字节。可以看出DECIMAL的空间占用还是很大的因此只有当需要对小数进行精确计算时才需要使用DECIMAL。除此之外我们还可以使用BIGINT代替DECIMAL例如需要保证小数点后5位的计算可以将值乘上10的5次方后作为BIGINT存储这样能同时避免浮点存储计算不精确和DECIMAL精确计算代价高的问题。1.3 字符串类型最常用的字符串类型当属VARCHAR和CHAR。VARCHAR作为可变长字符串会使用1或2个额外字节记录字符串的长度当最大长度未超过255时只需1个字节记录长度超过255则需2个字节。VARCHAR的适用场景最大长度比平均长度大很多列的更新少避免碎片使用复杂的字符集如UTF-8每个字符能使用不同的字节存储。CHAR则为定长字符串根据定义的字符串长度分配足够的空间适用场景长度短长度相近例如MD5经常更新。除了VARCHAR和CHAR针对存储大字符串可以使用BLOB和TEXT类型。BLOB和TEXT的区别在于BLOB是以二进制方式存储而TEXT是以字符方式存储。这也导致BLOB类型的数据没有字符集的概念无法按字符排序而TEXT类型则有字符集的概念可以按字符排序。两者的使用场景也由存储格式决定了当存储二进制数据时例如图片应使用BLOB而存储文本时例如文章则应使用TEXT类型。1.4 日期和时间类型MySQL中所能存储的最小时间粒度为秒常用的日期类型有DATETIME和TIMESTAMP。类型存储内容空间大小(Byte)时区概念DATETIME格式为YYYYMMDDHHMMSS的整数8无TIMESTAMP从1970年1月1日零点以来的秒数4有TIMESTAMP显示的值将依赖于时区意味在不同时区查询到的值将不一样。除了以上列出的不同TIMESTAMP还具有一个特殊属性在插入和更新时如果没有指定第一个TIMESTAMP列的值将会设置这个列的值为当前时间。我们在开发过程中应尽量使用TIMESTAMP主要是因为其空间大小仅需DATETIME的一半空间效率更高。如果我们想存储的日期和时间精确到秒之后怎么办由于MySQL并未提供所以我们可以使用BIGINT存储微妙级别的时间戳或者使用DOUBLE存储秒之后的小数部分。1.5 选择标识符通常来说整数是标识符的最好选择主要是因为其简单计算快且可使用AUTO_INCREMENT。2. 范式和反范式简单来说范式就是一张数据表的表结构所符合的某种设计标准的级别。第一范式属性不可分割现在的RDBMS系统建成的表都是符合第一范式的。而第二范式则是消除非主属性对码(可以理解为主键)的部分依赖。第三范式消除非主属性对码的传递依赖。具体的介绍可以读读知乎上的这个回答(https://www.zhihu.com/question/24696366/answer/29189700)严格范式化的数据库中每个事实数据会出现且只出现一次不会出现数据冗余这样所能带能带来的好处有更新操作更快修改更少的数据表更小更好地放内存中执行操作更快更少需要DISTINCT或GROUP BY。但也由于数据分散存在各张表中查询时需要对表进行关联。而反范式的优点则是不用进行关联将数据冗余存储。在实际应用中不会出现完全的范式化或完全的反范式化时常需要混用范式和反范式使用部分范式化的schema往往是最好的选择。关于数据库设计在网上看到这样一段话大家可以感受下。数据库设计应该分为三个境界第一境界刚入门数据库设计范式的重要性还未深刻理解。这时候出现的反范式设计一般会出问题。第二境界随着遇到问题解决问题渐渐了解到范式的真正好处从而能快速设计出低冗余、高效率的数据库。第三境界再经过N年的锻炼是一定会发觉范式的局限性的。此时再去打破范式设计更合理的反范式部分。范式就像武侠里面的招数初学者妄想不按招数来只能死的很难堪。毕竟招数都是高手总结归纳的精华。而随着武功提高招数熟练之后必然是发现招数的局限性要么忘掉招数要么自创招数。只要努力加上多熬几年总能达到第二个境界总会觉得范式是经典。此时能不过分依赖范式快速突破范式局限性的人自然是高手。4. 缓存表和汇总表除了上述说到的反范式在表中存储冗余数据我们还可以创建一张完全独立的汇总表或缓存表来满足检索的需要。缓存表指的是存储可以从schema其他表中获取数据的表也就是逻辑上冗余的数据。而汇总表则指的是存储使用GROUP BY等语句聚合数据计算出的不冗余的数据。缓存表可用于优化搜索和检索查询语句这里可以使用的技巧有对缓存表使用不同的存储引擎例如主表使用InnoDB而缓存表则可使用MyISAM获得更小的索引占用空间。甚至可以将缓存表放到专门的搜索系统中例如Lucene。汇总表则是为了避免实时计算统计值所带来的高昂代价代价来自两方面一是需要扫描表中的大部分数据二是建立特定的索引会对UPDATE操作有影响。例如查询微信过去24小时的朋友圈数量则可固定每1小时扫描全表统计后写一条记录到汇总表当查询时只需查询汇总表上最新的24条记录而不必每次查询时都去扫描全表进行统计。在使用缓存表和汇总表时必须决定是实时维护数据还是定期重建这取决于我们的需求。定期重建相比实时维护能节省更多的资源表的碎片更少。而在重建时我们仍需保证数据在操作时可用需要通过“影子表”来实现。在真实表后创建一张影子表当填充好数据后通过原子的重命名操作来切换影子表和原表。5. 加快ALTER TABLE操作的速度当MySQL在执行ALTER TABLE操作时往往是新建一张表然后把数据从旧表查出并插入到新表中再删除旧表如果表很大这样需要花费很长时间且会导致MySQL的服务中断。为了避免服务中断通常可以使用两种技巧在一台不提供服务的机器上执行ALTER TABLE操作然后再与提供服务的主库进行切换“影子拷贝”建立一张与原表无关的新表在数据迁移完成后通过重命名操作进行切换。但也不是所有的ALTER TABLE操作会引起表重建例如在修改字段的默认值时使用MODIFY COLUMN会进行表重建而使用ALTER COLUMN则不会进行表重建操作速度很快。这是因为ALTER COLUMN在修改默认值时会直接修改了存在表的.frm文件(存储字段的默认值)而并未重建表。参考《高性能MySQL》MySQL DECIMAL 数据类型(https://my.oschina.net/u/559356/blog/3057960)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宁波网站搭建定制非模板网站建设响应式网站工具

文章目录1、简单查询2、去除单列的重复结果查询3、去除多列的重复结果查询4、限制查询结果条数5、对查询结果排序(1)按照单个列的值进行排序(2)按照多个列的值进行排序6、带搜索条件查询(1)简单搜索条件查询…

外国网站手机dns学会网站建设三方协议

今天发现spring的异常格式没有跟着mvc的错误格式走,场景是用户权限的时候。查了一下原来是springsecurity定义了一组filter作用在了mvc上层,因此需要处理一下错误格式。 处理前错误返回信息如下: 由于使用了多语言,因此错误格式也…

建设信用卡申请进度查询官方网站phpcms wordpress

serialVersionUID简要介绍serialVersionUID是在Java序列化、反序列化对象时起作用的一个字段。Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进…

视频网站logo怎么做深圳外贸公司集中在哪

背景 最近在学习操作系统,需要从零开始搭建系统,由于教程中给的虚拟机搭建的方式感觉还是过于重量级,因此研究了一下通过 qemu 模拟器,配合 grub 完成启动系统的搭建。 qemu 介绍 qemu 是一款十分优秀的系统模拟器,…

响应式网站用什么单位南通专业网站建设公司

错误和异常 至此,本教程还未深入介绍错误信息,但如果您尝试过本教程前文中的例子,应该已经看到过一些错误信息。错误可(至少)被分为两种:语法错误 和 异常。 8.1. 语法错误 语法错误又称解析错误&#x…

网站开发学院长春中医药大学

什么是computed属性 computed 属性用于声明计算属性,这些属性的值是基于其他响应式属性计算而来的,当依赖的响应式属性发生变化时,计算属性会自动重新计算。 与Vue.js 2相比,Vue.js 3的 computed 属性语法稍有变化,不…

青岛建设集团招聘信息网站做家纺的网站

由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整,调整结束后测试应用均可以正…

济南的网站建设外贸在哪些网站做

邮件协议: SMTP、POP3、IMAP SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。 用户先将邮件投递到腾讯的 SMT…

如何用ps做网站图标wordpress 漏洞修复

go之树型结构深度理解补充 在上一篇中借用了 Ilija Eftimov 文章来讲解了tree的定义和一些方法。这篇文章主要是讲解在树型结构中如何判断节点与节点之间的关系。 A节点是否是B节点的直接上级A节点是否是B节点的可跳跃的上级(即中间隔开几个节点的间接上级)上一篇文章连接 g…

网站建设了流程企业展厅设计风格

pwngdb 中 b *$rebase(0x相对基址偏移) 是什么意思 pwngdb 是一个针对二进制漏洞利用的调试工具库,用于在 GDB 调试器中辅助进行漏洞开发和漏洞利用的调试。b *$rebase(0x相对基址偏移) 是 pwngdb 中的一个调试命令,用于在基地址重定位后设置断点。 在二…

便宜的做网站怎么建设网站运城

rsync是Linux系统下的数据镜像备份工具 使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。 它的特性如下: • 可以镜像保存整个目录树和文件系统。 • 可以很容易做到保持原来文件的权限、时间、软…

做设计的搜素材上什么网站好黄石网络推广

因为我学的是软件工程专业的嘛,当初高考误打误撞选择了这门专业,也算是满意吧,毕竟自己对计算机还是挺感兴趣的。 很早以前我就想把计算机学好,希望用华丽的编程技术去创造有趣的游戏,但一直因为各种因素直到高三我才…

绍兴做网站公司免费搭建自助网站

PowerDesigner自7.x新增加一个特性,就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚.今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时,我们需要对其进行扩展,因此又碰到这个问题&#xff0…

网站开发服务费计入什么科目如何建设国外网站

在开发中,有时候使用第三方框架时,我们因为特殊需求,需要继承框架中的一个Java类重写它的某个方法来达到期望的目的。 如果需要被重写的方法被使用 final 修饰了,这种情况下我们是无法直接继承这个类来重写这个方法的。 本文所述…

网站服务器信息整体软装设计公司

1、概述 源码放在文章末尾 该项目实现了无边框窗口效果&#xff0c;项目demo如下所示&#xff1a; 项目代码如下所示&#xff1a; #include "framelesswindow.h" #include <QGuiApplication> #include <QScreen>#ifdef Q_OS_WIN #include <window…

牛博网站建设一级建造师求职网

1、是事件源&#xff0c;表示触发事件的那个组件 如(button/label/listview...)&#xff0c;比如说你单击button&#xff0c;那么sender就是button2、EventArgs是事件参数&#xff0c;它用来辅助你处理事件比如说你用鼠标点击窗体&#xff0c;那么EventArgs是会包含点击的位置…

合肥网站建站工作室淘宝seo培训

876&#xff1a;链表的中间节点 206&#xff1a;反转链表 143&#xff1a;重排练表 链表的中间节点 这个题一看就是最简单的快慢指针&#xff0c;但是在具体实现的时候我还是犹豫思考了一下&#xff1a;要不要在链表前面放置哑节点&#xff0c;快指针应该什么时候判断已经到达…

个人备案的网站能做什么沧州网站设计多少钱

maven package执行的时候会遇到jdk版本不对的问题 &#xff1a;原因是 maven所指定的jdk版本与项目使用的jdk版本不一致1.项目属性的 java compiler可以设置2.直接修改 maven 的 settings.xml 一劳永逸settiings.xml <profiles>标签内加入<profile> <id>j…

第一次做网站选多大空间帝国网站教程

名字Servlet 版本Tomcat 9.04.0Jetty 9.43.1Undertow 2.04.0Spring Boot 2.4.2-SNAPSHOT 版本要求至少 Java 8 及其以上版本&#xff0c;目前最高能够支持到 Java 15 &#xff08;包含 15&#xff09;的版本。 Spring 框架&#xff08;Framework&#xff09; 5.3.2 的版本或者以…

网站设计书怎么写网站建设管理中se是什么意思

2.1下载Eclipse 2.2 安装C/C版本的Eclipse 2.3 安装JDT插件开发Java程序 2.4 使用Eclipse开发驱动程序 既然安装了eclipse来进行驱动学习&#xff0c;那么我们就先来试试看eclipse开发驱动的大致流程。这里以Linux设备驱动作为示列给读者展示整个流程&#xff0c;Android底层的…