MySQL

一、什么是MySQL

MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL的默认端口号是3306

二、存储引擎

我们知道了MySQL是关系型数据库,那MySQL中的数据存储到哪呢?这就要说到存储引擎了。

我们可以通过下面的命令查看默认的存储引擎:

mysql> show variables like '%storage_engine%';

MySQL的存储引擎主要分为两种:MyISAM 和 事务型存储引擎InnoDB 。那么他们两有啥区别呢?

MyISAM 是 MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下。

两者的对比:

  1. 是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

  2. 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行速度比InnoDB类型更快(不一定),但是不提供事务支持。但是InnoDB 提供事务支持,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback) 和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

MylSAM不一定比InnoDB快:在很多我们已知场景中,InnoDB的速度都可以让MyISAM望尘莫及,尤其是用到了聚簇索引,或者需要访问的数据都可以放入内存的应用。
 

是否支持外键: MyISAM不支持,而InnoDB支持。

  1. 是否支持MVCC :仅 InnoDB 支持。应对高并发事务,MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTEDREPEATABLE READ 两个隔离级别下工作;MVCC可以使用乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。

关于MVCC,我们在下文会有所介绍。

相关推荐

  1. <span style='color:red;'>MySQL</span>

    MySQL

    2024-07-22 11:36:05      46 阅读
  2. <span style='color:red;'>Mysql</span>

    Mysql

    2024-07-22 11:36:05      62 阅读
  3. MySQL

    2024-07-22 11:36:05       45 阅读
  4. <span style='color:red;'>Mysql</span>

    Mysql

    2024-07-22 11:36:05      62 阅读
  5. <span style='color:red;'>MySQL</span>

    MySQL

    2024-07-22 11:36:05      47 阅读
  6. MySQL

    2024-07-22 11:36:05       46 阅读
  7. Mysql

    2024-07-22 11:36:05       44 阅读
  8. <span style='color:red;'>MYSQL</span>

    MYSQL

    2024-07-22 11:36:05      46 阅读
  9. <span style='color:red;'>mysql</span>

    mysql

    2024-07-22 11:36:05      42 阅读
  10. MySQL

    2024-07-22 11:36:05       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 11:36:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 11:36:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 11:36:05       45 阅读
  4. Python语言-面向对象

    2024-07-22 11:36:05       55 阅读

热门阅读

  1. Udp协议

    Udp协议

    2024-07-22 11:36:05      21 阅读
  2. Xcode应用开发:自定义图表的终极指南

    2024-07-22 11:36:05       17 阅读
  3. 7.22 cf

    2024-07-22 11:36:05       19 阅读
  4. 一线大厂前端vue面试题

    2024-07-22 11:36:05       14 阅读
  5. 【MAUI】动态界面

    2024-07-22 11:36:05       22 阅读
  6. 小白C语言基础详解:C 语言的内存管理

    2024-07-22 11:36:05       16 阅读
  7. 等保测评深度探索:揭秘安全合规的幕后英雄

    2024-07-22 11:36:05       19 阅读
  8. Linux命令更新-文本处理grep

    2024-07-22 11:36:05       20 阅读
  9. 事务

    事务

    2024-07-22 11:36:05      20 阅读