2017年6月8日,天气阴。心情晴。

连续做梦两个晚上了,昨晚竟然梦见一个很长时间不联系的初中同学了,早上上班的路上聊了聊。女孩现在出差在贵州,风景秀美的地方。我说“你现在生活很滋润”。女孩说“那是你没有看到我不滋润的一面”。确实,在生活中我们总是把自己光鲜的一面展示给别人,而把落魄的一面“伪装起来”。

昨天博客上有博友问我问题,竟然称呼我为“大神”,心里慌的很,因为自己很清楚距离这个“大神”相差甚远,所以得加倍努力,向着“大神”的目标前进。

博友问的问题是关于Mysql数据库的,其中涉及数据引擎和修复、优化数据表语句,之前从来没有考虑过这些问题,更没有用过。所以找了一些资料了解了一下,现在把自己找到的资料总结如下。

1.Mysql数据库存储引擎

概念:

存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎。

(1)innoDB存储引擎

①innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本并发控制的事务安全。

②innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动从现有的值开始增长,如果有但是比现在的还大,则就保存这个值。

③innodb存储引擎支持外键(foreign key),外键所在的表称为子表(或从表),而所依赖的表称为父表(或主表)。

④innodb存储引擎最重要的是支持事务,以及事务相关联功能。

⑤innodb存储引擎支持mvcc的行级锁。

⑥innodb存储引擎索引使用的是B+Tree。

(2)MyISAM存储引擎

1)MyISAM   这种存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。

2)MyISAM   类型的表支持三种不同的存储结构:静态型、动态型、压缩型。

①静态型:就是定义的表列的大小是固定(即不含有:xblob、xtext、varchar等长度可变的数据类型),这样mysql就会自动使用静态myisam格式。

使用静态格式的表的性能比较高,因为在维护和访问的时候以预定格式存储数据时需要的开销很低。但是这高性能是由空间换来的,因为在定义的时候是固定的,所以不管列中的值有多大,都会以最大值为准,占据了整个空间。

②动态型:如果列(即使只有一列)定义为动态的(xblob, xtext, varchar等数据类型),这时myisam就自动使用动态型。

虽然动态型的表占用了比静态型表较少的空间,但带来了性能的降低,因为如果某个字段的内容发生改变则其位置很可能需要移动,这样就会导致碎片的产生。随着数据变化的怎多,碎片就会增加,数据访问性能就会相应的降低。

对于因为碎片的原因而降低数据访问性,有两种解决办法:

a、尽可能使用静态数据类型。

b、经常使用optimize   table语句,他会整理表的碎片,恢复由于表的更新和删除导致的空间丢失。

如果存储引擎不支持 optimize  table , 则可以转储并重新加载数据,这样也可以减少碎片。

③压缩型:如果在这个数据库中创建的是在整个生命周期内只读的表,则这种情况就是用myisam的压缩型表来减少空间的占用。

3)MyISAM也是使用B+tree索引,但是和Innodb的在具体实现上有些不同。

(3)MEMORY存储引擎

①memory存储引擎相比前面的一些存储引擎,有点不一样,其使用存储在内存中的数据来创建表,而且所有的数据也都存储在内存中。

②每个基于memory存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该文件只存储表的结构,而其数据文件,都是存储在内存中,这样有利于对数据的快速处理,提高整个表的处理能力。

③memory存储引擎默认使用哈希(HASH)索引,其速度比使用B+Tree型要快,如果读者希望使用B树型,则在创建的时候可以引用。

④memory存储引擎文件数据都存储在内存中,如果mysqld进程发生异常,重启或关闭机器这些数据都会消失。所以memory存储引擎中的表的生命周期很短,一般只使用一次。

(4)BlackHole存储引擎(黑洞引擎)

支持事务,而且支持mvcc的行级锁,主要用于日志记录或同步归档,这个存储引擎除非有特别目的,否则不适合使用!

2.Mysql下优化表和修复表

随着mysql的长期使用,可以通过修复表来优化,优化时减少磁盘占用空间,方便备份。

REPAIR TABLE `table_name` 修复表      OPTIMIZE TABLE `table_name` 优化表

REPAIR TABLE ——用于修复被破坏的表。

OPTIMIZE TABLE—— 优化表,用于回收闲置的数据库空间。当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排。

注意:是磁盘上,而非数据库。

多数时间并不需要运行OPTIMIZE TABLE,只需在批量删除数据行之后,定期(每周一次或每月一次)进行一次数据表优化操作即可,只对那些特定的表运行。

收集关于MySQL数据库的相关知识_关于Mysql数据库的知识总结相关推荐

  1. mySql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver

    Mysql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver 1. 在使用mysql时,控制台日志报错如下: Loading class `c ...

  2. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...

    内容简介 郑明秋.蒙连超.赵海侠主编的<MySQL数据库实用教程>是作者在多年的数据库开发实践与教学经验的基础上,根据计算机相关专业的职业岗位能力需求及学生的认知规律倾心组织编写的.本教材 ...

  3. mysql是如何管理数据_【MySQL】如何管理数据库

    MySQL作为一款数据库管理系统(DataBase Management System,DBMS)软件,可以管理多个数据库.本文,主要讲述如何对一个数据库进行一系列的"增.删.改.查&quo ...

  4. mysql killed进程不结束_优秀的数据库产品——MySQL 云数据库服务

    作为一种低成本,高性能,高可靠性和开放源代码的数据库产品,MySQL已在Internet公司中广泛使用. 例如,淘宝有数千个MySQL服务器. 尽管NoSQL在过去两年中发展迅速,新产品层出不穷,但N ...

  5. 阿里云 mysql 修改root密码修改_怎样修改数据库root密码

    在 Linux 中修改 MySQL 或 MariaDB 的 Root 密码 如果你是第一次安装 MySQL 或 MariaDB,你可以执行 mysql_secure_installation 脚本来实 ...

  6. mysql的分区技术作用_理解MySQL数据库分区管理的技术细节

    在MySQL数据库中,表的不同部分在不同的位置被存储为单独的表.分区主要就是用来解决表在不同的位置存储的问题.在其他数据库中,也会存在这种情况.他们将这种类型的数据表称之为分区表.分区的管理,对于My ...

  7. mysql 限制单个用户资源_限制MySQL数据库单个用户最大连接数等的方法

    限制MySQL数据库单个用户最大连接数等的方法 最近经常有网友问我,他们的服务器上总有一些网站用户的连接数过大,而影响了其他的网站的正常使用,那么如何把某一条臭鱼限制在自己的一亩三分地呢?下面我来说一 ...

  8. MySQL数据库肖睿版_正版 MySQL数据库应用技术及实战肖睿MySQL数据库数据操作数据恢复备份MySQL数据库优化My...

    基本信息 书名:MySQL数据库应用技术及实战 定价:32.00元 作者:肖睿程宁田崇峰 出版社:人民邮电出版社 出版日期:2018-01-01 ISBN:9787#115474223 字数: 页码: ...

  9. mysql数据应用从入门_《MySQL数据库应用从入门到精通》

    第1章 数据库概述 1.1基本概念 1.1.1数据库技术发展阶段 人工管理阶段-->文件系统阶段-->数据库系统阶段 1.1.2涉及的概念 数据库(DB).数据库管理系统(DBMS).数据 ...

  10. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

最新文章

  1. 一条推文卖出 290 万美元天价?网友:我竟是隐藏的富翁
  2. Spring源码剖析——Bean的配置与启动
  3. babyos (三)——利用BIOS INT 0x13读取软盘
  4. android富文本图片自适应,Android 图片混排富文本编辑器控件
  5. Juliane Begenau
  6. pmp每日三题(2022年3月10日)
  7. Android文档 - 账户管理器概述
  8. .net6给winform带来的新功能
  9. java web redis_java web网页版redis客户端工具
  10. pytorch: MaxUnpool2d 与 Upsampling
  11. Android dalvik GC相关的属性详解
  12. JVM·垃圾收集器与内存分配策略之对象是否可被回收!
  13. delphi android 打印机,delphi中如何检测打印机状态?(在线等) ( 积分: 100 )
  14. 多一个渠道,多一份收益!
  15. F5在铁路12306中的应用
  16. 亚马逊市值超微软成为全球市值最高的公司
  17. 计算机网络保密承诺书,保密承诺书集合5篇
  18. android studio 实例代码,android studio学习之一(示例代码)
  19. java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍
  20. Drill系列(1):Dremel的原理

热门文章

  1. Android Studio电脑上怎么下载-Android Studio下载和安装图文教程[超详细]
  2. Hive 函数大全(吐血整理)
  3. 盲盒app功能模式分析讲解
  4. 解决虚拟机打不开Ubuntu的问题
  5. Java中数组转集合总结
  6. 网络游戏不做实名无法过审,大厂都是怎么做实名的?
  7. 双11支付宝蚂蚁花呗用了要及时还,不然逾期就麻烦了
  8. Mac osX 添加自定义字体库
  9. 如何去实现机械灵巧手玩魔方和弹钢琴_英国Shadow Robot研制世界最先进机器人灵巧手,不断革新解放双手...
  10. linux 卸载 flash,Ubuntu 9.10 下安装Adobe Flash 插件失败,如何清除?