• MySQL介绍


    一、MySQL介绍

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

    二、系统特性

    1.MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
    2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
    3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
    4.支持多线程,充分利用 CPU 资源。
    5.优化的 SQL查询算法,有效地提高查询速度。
    6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
    7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
    8.提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
    9.提供用于管理、检查、优化数据库操作的管理工具。
    10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    11.支持多种存储引擎
    12.MySQL 是开源的,所以你不需要支付额外的费用。
    13.MySQL 使用标准的 SQL数据语言形式。
    14.MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。
    15.MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
    16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)
    17.复制全局事务标识,可支持自我修复式集群(5.6新增)
    18.复制无崩溃从机,可提高可用性(5.6新增)
    19.复制多线程从机,可提高性能(5.6新增)
    20.3倍更快的性能(5.7 新增)
    21.新的优化器(5.7新增)
    22.原生JSON支持(5.7新增)
    23.多源复制(5.7新增)
    24.GIS的空间扩展 (5.7新增)

    三、常用存储引擎

    1.MyISAM存储引擎:

    存放的位置: MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是C:\Documentsand Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data

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

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

    该引擎基于ISAM数据库引擎,除了提供ISAM里所没有的索引和字段管理等大量功能,MyISAM还使用一种表格锁定的机制来优化多个并发的读写操作,但是需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的 MyISAMPack工具。MyISAM强调了快速读取操作,主要用于高负载的select,这可能也是MySQL深受Web开发的主要原因:在Web开发中进行的大量数据操作都是读取操作,所以大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。
    MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型。
    静态型:指定义的表列的大小是固定(即不含有:xblob、xtext、varchar等长度可变的数据类型),这样MySQL就会自动使用静态MyISAM格式。使用静态格式的表的性能比较高,因为在维护和访问以预定格式存储数据时需要的开销很低;但这种高性能是以空间为代价换来的,因为在定义的时候是固定的,所以不管列中的值有多大,都会以最大值为准,占据了整个空间。
    动态型:如果列(即使只有一列)定义为动态的(xblob, xtext, varchar等数据类型),这时MyISAM就自动使用动态型,虽然动态型的表占用了比静态型表较少的空间,但带来了性能的降低,因为如果某个字段的内容发生改变则其位置很可能需要移动,这样就会导致碎片的产生,随着数据变化的增多,碎片也随之增加,数据访问性能会随之降低。
    对于因碎片增加而降低数据访问性这个问题,有两种解决办法:
    a、尽可能使用静态数据类型;
    b、经常使用optimize table table_name语句整理表的碎片,恢复由于表数据的更新和删除导致的空间丢失。如果存储引擎不支持 optimize table table_name则可以转储并 重新加载数据,这样也可以减少碎片;
    压缩型:如果在数据库中创建在整个生命周期内只读的表,则应该使用MyISAM的压缩型表来减少空间的占用。

    优缺点:MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

    2. innoDB存储引擎

    存储位置:MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,.frm文件默认存放位置是C:\Documents and Settings\All Users\ApplicationData\MySQL\MySQL Server 5.1\data,ibdata1、.ibd文件默认存放位置是MySQL安装目录下的data文件夹。

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

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

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

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

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

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

    优缺点:InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

    3. MEMORY存储引擎

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

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

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

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

    4. ARCHIVE存储引擎

    该存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。

  • 相关阅读:
    【uni-app+vue3】分享功能,App端调用手机的系统分享,可分享到微信、QQ、朋友圈等,已实现
    免费的运维监控系统PIGOSS BS基础版,欢迎下载使用
    中国数据库崛起,阿里云李飞飞:中国云数据库多种主流技术创新已领先国外
    账号安全基本措施1
    FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
    内容互动性的提升策略:Kompas.ai的智能工具
    第四章-串
    石化技术杂志石化技术杂志社石化技术编辑部2022年第10期目录
    L1-034 点赞
    TCP协议
  • 原文地址:https://blog.csdn.net/qq_45867488/article/details/127574190