MySQL 是一款开源的 [ 关系型数据库软件系统 , RDBMS ] ,在GPL(General Public License) 的许可下根据需求可自定义源码。
虽说Oracle 为商业数据库的无冕之王,但随着阿里、网易、雅虎等大型互联网企业的推动,目前MySQL已经成为当今最流行的开源数据库,并一步步开始占领原有商业数据库的市场...
数据库排名[1] https://db-engines.com/en/ranking
最初为AB公司的产品,Mysql5.0及之前的版本均由AB公司管理,
在2008年的时候AB公司被 Sun 公司收购,Mysql也就归属到了 Sun公司 下;
没多久,Sun公司就被Oracle公司收购了,此期间诞生了一个Sun向Oracle的过渡版本,Mysql 5.5 版本;
直到 Mysql 5.6 就彻底归属于Oracle公司旗下了,从Oracle收购Mysql以来,Mysql发展的速度及新的功能越来越强大,逐步向Oracle靠拢,如:表空间、redo、undo分离、隐藏索引等;
2019年,Mysql8.0.15已经GA(官方发布稳定版本), 可以看到在Oracle公司下的Mysql是发育比较好的
工作原理
MySQL 数据库的存储引擎是插件式的,在创建数据表的时候可以根据需求选用合适的引擎,因为InnoDB引擎各方面功能更完善,优秀,所以默认存储引擎为InnoDB,下面介绍常见的存储引擎。
MyISAM
•是MySQL 5.5之前的默认数据库引擎•性能极佳,而且提供了大量的特性•包括全文索引、压缩、空间函数等•MyISAM不支持事务和行级锁•缺陷是崩溃后数据无法安全恢复
InnoDB
•MySQL 5.5版本后使用 InnoDB(事务性数据库引擎)为默认数据库引擎;用于MySQL的事务安全(ACID支持)存储引擎;•具有提交,回滚和崩溃恢复的功能以保护用户数据;•支持事务处理,外部键(foreign key),行级锁 等高级数据库功能;
1. 是否支持行级锁 : MyISAM 只有表级锁,
而InnoDB 支持行级锁和表级锁,默认为行级锁。
2. InnoDB支持事务和崩溃后的安全恢复,MyISAM不支持;
3. MyISAM 强调的是性能,每次查询具有原子性,其执行比InnoDB类型更快
InnoDB 提供事务支持行锁,外部键等高级数据库功能。
具有事务、回滚和崩溃修复能力的事务安全型表。
4. 是否支持外键:MyISAM不支持,而InnoDB支持
......
事务是逻辑上的 一组操作(一条或多条SQL命令); 要么都执行,要么都不执行。
事务最经典的例子: 假如小明要给小红转账100元,这个转账会涉及到两个关键操作就是:将小明的余额减少100元,将小红的余额增加100元。在这两个操作之间突然出现银行系统崩溃等错误,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。
原子性(Atomicity):
事务是最小的执行单位,不允许分割。事务的原子性确保执行操作要么全部完成,要么失败还原(回滚);
一致性(Consistency):
执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;
隔离性(Isolation):
并发访问数据库时,一个用户的事务不被其他事务所干扰(串行化),各并发事务之间数据库是独立的;
持久性(Durability):
一个事务被提交之后。它对数据库中数据的改变是持久的(数据存盘),即使数据库发生故障也不应该对其有任何影响。
[1]
数据库排名: https://db-engines.com/en/ranking