mysql常见的存储引擎

Wesley13
• 阅读 555

1.什么是存储引擎

   不同的技术以及配套的相关功能在 MySQL中被称作存储引擎。存储机制、索引技巧、锁定水平等等。

2.常见操作

  查看默认存储引擎

    show variables like '%engine%';

  查看数据库支持的存储引擎

    show engines \G;

    show variables like 'have%';  #DISABLED表示被禁用

3.常用索引

  myisam

    不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表

    每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:

      .frm(存储表定义)

      .MYD(MYData,存储数据)

      .MYI(MYIndex,存储索引)

    数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度,临时解决空间不足问题

    表损坏后,不能被访问,数据库异常重启

    CHECK TABLE语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏到MyISAM表

    3种不同的存储格式:

      静态(固定长度)表

        存储非常迅速,容易缓存,出现故障容易恢复

        缺点是占用的空间通常比动态表多

        宽度定义补足空格

      动态表

        动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少

        频繁的更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难

      压缩表

        myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支

  InnoDB

支持事务安全,写效率差,占用更多的磁盘空间保留数据和索引

自动增长列

InnoDB表的自动增长列可以手工插入,但是插入的值是空或者0,则实际插入的将是自动增长后的值

last_insert_id() 查询当前线程最后插入记录使用值,如果一次插入多条记录,返回的是第一条记录使用的自动增长值

自动增长列必须是索引,如果是组合索引的话,必须是组合索引的第一列

外键约束

只有InnoDB支持索引,创建外键时,要求父表必须有对应的索引,子表也会对应创建对应的索引

删除、更新父表时,对子表进行相应的操作,restrict、cascade、set null和no action

restrict,no action子表有关联的情况下,父表不能更新

cascade  父表在更新或者删除时,更新或者删除子表对应的记录

set null  父表在更新或者删除时,子表对应的子段被set null

导入多表数据时,暂停外键检查

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
MySQL数据库表设计规范
一、数据库设计1、一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎;其他存储引擎请在DBA的建议下使用。2、Storedprocedure(包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用。3、UUID(),USER()这样的
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
mysql存储引擎
什么是存储引擎?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。MySql的存储引擎:MyISAM节省数据库空间,当数据读远大于修改时,可以使用该存储引擎InnoDB支持事务,
Wesley13 Wesley13
2年前
MySQL知识体系——存储引擎
你需要get的小点存储引擎是MySQL有别于其他数据库管理系统的最大特色。MySQL中的数据用各种不同的“技术”存储在文件(或者内存)中。每一种“技术”都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型:\
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Wesley13 Wesley13
2年前
mysql储存引擎
Mysql数据库常用存储引擎数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
7个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这