优化表的数据类型

表需要使用何种数据类型,是需要根据应用来判断的。虽然应用设计的时候需要考虑字段的长度留有一定的冗余,但是不推荐让很多字段都留有大量的冗余,这样即使浪费存储也浪费内存。

我们可以使用PROCEDURE ANALYSE()对当前已有的应用进行表类型的判断,该函数可以对数据表中的数据类型提出优化建议,可以根据应用的实际情况酌情考虑是否实施优化,语法:

输出的每一列信息都会对数据表中的数据类型提出优化建议。第二个例子告诉PROCEDURE ANALYSE()不要为那些包含的值多于16或者256直接的ENUM类型提出建议。如果没有这样的限制,输出的信息可能更长;ENUM定义通常很难阅读。

在对字段类型进行优化时,可以根据统计信息并结合实际情况对其进行优化。

通过拆分,提高表的访问效率

这里说的拆分、主要是针对MyISAM类型的表,拆分的方法可以分成两种情况:

1)纵向拆分

纵向拆分是按照应用访问的频度,将表中经常访问的字段和不经常访问的字段拆分成两个表,经常访问的字段尽量是定长的,这样可以有效地提高表的查询和更新速度。

2)横向拆分

横向拆分是按照应用的情况,有目的的将数据拆分成几个表或者通过分区分到多个分区中,这样可以有效避免MyISAM表的读取和更新导致的锁问题。

逆规范化

数据库的规范化设计强调数据的独立性,数据应该尽量减少冗余,因为存在过多的冗余数据,就意味着要占用更多的物理控件,同时也对数据的维护和一致性检查带来了问题。

但是对于查询操作很多的应用,一次查询可能需要访问多张表来进行,如果通过冗余记录在相同表中,更新的代价增加不多,但是查询操作效率可以有明显提高,这种情况就可以考虑通过冗余数据来提高效率。

使用冗余统计表

使用CREATE Temporary Table语法,它是基于session的表,表的数据保存在内存中,当session断掉后,表自然消除。

对于大表的统计分析,如果统计的数量不大,利用Insert、Select将数据迁移到临时表中比直接在大表上做统计要有效率很多。

选择更合适的表类型

1)如果应用出现比较严重的锁冲突,那就应该考虑是否更改存储引擎到InnoDB,行锁机制可以有效地减少锁冲突的出现。

2)如果应用查询操作很多,且对事务完整性要求不严格,则可以考虑使用MyISAM存储引擎



MySQL数据表的优化相关推荐

  1. MySQL数据表设计优化

    MySQL数据表设计优化 一.选择优化的数据类型 二.范式和反范式 2.1 范式 2.2 范式优缺点 2.3 反范式 2.3 反范式优缺点 2.4 混用范式化和反范式化 三.使用缓存表和汇总表 一.选 ...

  2. mysql数据表数据丢失6_MYSQL数据表损坏的原因分析和修复方法小结

    MYSQL数据表损坏的原因分析和修复方法小结 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. ...

  3. scala解析csv文件写入mysql_scala实战之spark源码修改(能够将DataFrame按字段增量写入mysql数据表)...

    在上一篇博文中,我们可以简单的应用官网的给出的一些接口提取mysql数据表中的数据到spark中,也可以将spark的运行结果存入mysql中. 但是我们会发现spark将其DF存入mysql的时候, ...

  4. MySQL数据库——MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...

  5. 非法关机 mysql_一次非法关机导致mysql数据表损坏的实例解决 -电脑资料

    排查修复数据表的经过: 2.启动mysql服务,卸载和关闭rpm安装的mysql服务 (昨天安装postfix好像yum安装了mysql),用netstat -anp |grep mysqld 命令查 ...

  6. 追踪app崩溃率、事件响应链、Run Loop、线程和进程、数据表的优化、动画库、Restful架构、SDWebImage的原理...

    1.如何追踪app崩溃率,如何解决线上闪退 当 iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈 跟踪信 ...

  7. django存入mysql数据库_django如何存数据到一个mysql数据表里面

    让我们聊聊这个话题, django如何存数据至mysql数据表里面,你会用什么方法?正常情况下,我们form逻辑处理后,直接form.save(),是,这个方法没毛病:但有没有其他的方法呢?假如我们有 ...

  8. php转换excel文件怎么打开方式,用PHP将mysql数据表转换为excel文件格式_php

    详细内容如下: $DB_Server = "localhost"; $DB_Username = "mydowns"; $DB_Password = " ...

  9. linux下查看mysql数据库的字段类型_系统运维|[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型...

    提问: 我想要知道我的MySQL数据库是MyISAM还是Innodb类型.我该如何检查MySQL数据库表的类型? MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的 ...

最新文章

  1. OpenCV计算机视觉编程之三种图像像素的遍历方法
  2. 面试必问:如何访问 Redis 中的海量数据?
  3. 使用Spring Boot开发Restful程序
  4. iOS 定位功能的实现
  5. php类库下载下来怎么使用,PHP如何实现$this-[类库名称]-[类库方法]。
  6. Windows编程初步(一)
  7. grafana计算不同时间的差值_大数据时代!如何基于Spark Streaming构建实时计算平台...
  8. Spring IoC、应用上下文容器层次分析
  9. MT4缠论公式指标(缠中狩猎外汇MT4缠论分笔分段中枢公式指标)
  10. 如何查看java安装路径
  11. cocosBuilder使用总结
  12. 商淘软件已成为ThinkPHP商城系统之标杆产品
  13. 电子签名市场,CA、混合云、SaaS三路混战
  14. 山西阳泉中考计算机科目,阳泉中考信息技术考试
  15. 用matlab化简三角函数方程组,matlab化简三角函数 matlab怎么样化简三角函数?
  16. Qt_屏幕保护程序、进程监听、数据库读取、屏幕保护
  17. Python-等额本息计算
  18. 通过爬虫获取免费IP代理,搭建自己的IP池(http)
  19. 数据库原理第三章习题作业
  20. C++ advanced(4)make function and SFINAE

热门文章

  1. R语言亚组分析 (Subgroup Analysis)及森林图绘制实战
  2. R语言ggplot2可视化在lines线图的尾端添加线图标签、并且去除图例实战
  3. R语言构建xgboost模型:使用xgboost构建广义线性模型(GLM):使用gblinear算法拟合线性模型并配置L1和L2正则化
  4. Python将彩色图转换为灰度图
  5. python使用FPDF包将多个图像文件写入pdf文件实战
  6. python colormap函数_python-使用由x,y位置定义的rgb值创建colormap
  7. DNA测序,第一代DNA测序,第二代DNA测序,第三代DNA测序,sanger法
  8. 已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在tab表中,要查的学生学号放在变量no中,查表结果放在变量english中。
  9. Genomes correction and assembling - Present methods and tools
  10. 无法显示验证码去掉html,后台登陆验证码无法显示