侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Mysql存储引擎 MyISAM和InnoDB

2024-05-10 星期五 / 0 评论 / 0 点赞 / 9 阅读 / 4283 字

存储引擎介绍  Mysql中的数据用各种不同的技术存储在文件(或内存)中。这些技术中的每一个种技术都是用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获

  • 存储引擎介绍
      Mysql中的数据用各种不同的技术存储在文件(或内存)中。这些技术中的每一个种技术都是用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在Mysql中被称为存储引擎。最知名的存储引擎为 MyISAM 和 InnoDB。
  • MyISAM特点介绍
      MyISAM是Mysql数据库系统5.5版本之前的默认存储引擎,他的前身是ISAM。ISAM是一个定义明确且历经时间考验的数据表格管理方法。它的读取操作速度很快,而且不占用大量内存和存储资源。

    特点:
    1)不支持事务
    2)表级锁定形式,数据在更新时锁定整个表。
    3)数据库读写过程中相互阻塞。
    4)可以通过key_buffer_size来设置缓存索引
    5)数据单独写入或读取 速度快占用资源少。
    6)不支持外键约束,只支持全文索引。
    7)在每个磁盘上存储成三个文件,文件名均以表的名字开始。
    【 .frm文件存储表定义 | 数据文件的扩展名:.MYD(MYData) | 索引文件的扩展名:.MYI(MYIndex) 】

  • InnoDB特点介绍

    1)支持事务,支持四个事务隔离级别。
    2)行级锁定,但是全表扫描仍然会是表级锁定。
    3)读写阻塞与事务隔离级别相关。
    4)具有非常高效的缓存特性,能缓存索引,也能缓存数据。
    5)表与主键以簇的方式存储。
    6)支持分区、表空间,类似Oracle数据库。
    7)支持外键约束。 Mysql5.5以前版本不支持全文索引,5.5版本以后支持。
    8)适合对硬件资源要求比较高的场合。

  • MyISAM与InnoDB的区别
      InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

  • 设置存储引擎及常用命令
  • 查看数据库可配置的存储引擎类型

    > show engines;
  • 查看正在使用的存储引擎

    > show table status from school where name='info';  或> use school;   > show create table info;
  • 配置存储引擎
  • 1)命令修改

    > use 库;      //进入数据库> alter table 表 engine=MyISAM;       //修改存储引擎为MyISAM> alter table 表 engine=InnoDB;   
  • 2)修改配置文件my.cnf
  • 修改默认指定引擎 仅对新建的表有效!

    # vim /etc/my.cnf...[mysqld]default--storage-engine=MyISAM      //添加  或者=InnoDB3)创建表时直接指定> use 库;> create table 表名(id int)engine=InnoDB; > create table 表名(id int)engine=MyISAM;> show create table 表;   查看
  • 4)批量修改引擎
  • mysql 5.5版本

    # yum -y install perl-DBI# yum -y install perl-DBD-MySQL        //安装perl对mysql的操作模版# mysql_convert_table_format --host=localhost --user=root --password=123456 --socket=/tmp/mysql.sock --engine=MyISAM 库名 表名1 表名2========查找socket的位置 ====      # yum install -y lsof                        # lsof | grep mysql | grep sock ========================= 但是改成InnoDB 会报错需要修改下面配置文件# vim /usr/local/mysql/bin/mysql_convert_table_format    "e|engine|type=s"  => /$opt_engine,   //32行修改为engine,然后执行修改的命令# mysql_convert_table_format --host=localhost --user=root --password=123456 --socket=/tmp/mysql.sock --engine=InnoDB 库名 表名1 表名2

广告 广告

评论区