zoukankan      html  css  js  c++  java
  • MySQL版本浅介

    一、关于MySQL发行版介绍:

    1、 MySQL官方发行版

    MySQL是最流行的数据库,主要特点:

    简单:MySQL使用很简单,可以无师自通地参照文档安装运行和使用MySQL,几乎没有什么门槛。

    开源:流行和免费。

    支持多种存储引擎:MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

    支持高可用架构:MySQL自身提供的replication(主从复制)功能可以实现MySQL数据的实时备份。

    2、Mysql的存储引擎

    Mysql最常用的有两个存储引擎:MyISAM和 InnoDB。

    MySQL4和5使用默认的MyISAM存储引擎。

    MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。

    两种存储引擎的大致区别表现在:

    1)InnoDB支持事务,MyISAM不支持。事务是一种高级的处理方式,如在一些列增删改中出错还可以回滚还原,而采用MyISAM存储引擎就不可以;

    2)MyISAM查询数据相对较快,适合大量的select ,可以全文索引,InnoDB适合频繁修改以及涉及到安全性较高的应用;

    3)InnoDB支持外键,支持行级锁,MyISAM不支持;

    4)MyISAM索引和数据是分开的,而且其索引是压缩的,缓存在内存的是索引,不是数据。而InnoDB缓存在内存的是数据,相对来说,服务器内存越大,InnoDB发挥的优势越大。

    5)InnoDB可支持大并发请求,适合大量insert、update操作。

    **************关键点**************:

    关于MyISAM与InnoDB选择使用:

    1)如果应用程序一定要使用事务,毫无疑问要选择INNODB引擎。

    2)如果应用程序对查询性能要求较高,就要使用MyISAM了。MyISAM拥有全文索引的功能,这可以极大地优化查询的效率。

    ************************************

    3、Percona  Server分支(另一款MySQL版本)

    Percona Server由领先的MySQL咨询公司Percona发布。

    Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方MySQL Enterprise发行版的版本。

             Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了percona-toolkit等DBA管理工具箱。

    4、MariaDB(另一款MySQL版本)

    历史:MySQL创始人将MySQL卖给Oracle后,重新开发出MariaDB;

             MariaDB由MySQL的创始人开发,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

             MariaDB提供了MySQL提供的标准存储引擎,即MyISAM和InnoDB,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。

    5、如何选择:

    线上业务系统首选Percona分支,其次是MYSQL版本,最后是MariaDB。

    6、如何在mysql数据库中查看存储引擎是什么类型?

    show engines;           #查看存储引擎

    存储引擎目录其实对应mysql存放数据库文件内

    show table status from xxx where name='xxx'; 查看数据库中某个表属性
    eg:
    mysql> show table status from mysql where name='engine_cost';
    +-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+--------------------+---------+
    | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
    +-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+--------------------+---------+
    | engine_cost | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | 0 | 0 | 0 | NULL | 2020-01-10 23:11:39 | NULL | NULL | utf8_general_ci | NULL | stats_persistent=0 | |
    +-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+--------------------+---------+
    1 row in set (0.00 sec)

    mysql> show table status from mysql where name='engine_cost' G;           #G用列表形式显示
    *************************** 1. row ***************************
    Name: engine_cost
    Engine: InnoDB
    Version: 10
    Row_format: Dynamic
    Rows: 2
    Avg_row_length: 8192
    Data_length: 16384
    Max_data_length: 0
    Index_length: 0
    Data_free: 0
    Auto_increment: NULL
    Create_time: 2020-01-10 23:11:39
    Update_time: NULL
    Check_time: NULL
    Collation: utf8_general_ci
    Checksum: NULL
    Create_options: stats_persistent=0
    Comment:
    1 row in set (0.00 sec)

    ERROR:
    No query specified

    .frm #表结构定义文件(表示“表”的文件结构信息:如字段、存储引擎、创建、更新访问时间等信息)

    如果你数据文件是以InnoDB形式存储,那ibdata1文件(二进制文件)中会存储数据文件,ib_logfile0 ib_logfile1会存储InnoDB的事务文件(操作日志信息)

    ib_logfile0 ib_logfile1两个文件属于InnoDB存储下的事务文件:
    当数据库出现宕机情况时,数据库会根据这两个文件内的操作记录,回滚到最近的记录,保证数据一致性。

    ib_logfile0 ib_logfile1的记录方式为:
    先在ib_logfile0下写入日志,当ib_logfile0写满后再写入ib_logfile1,当ib_logfile1写满后;会对ib_logfile0再次写入,这是对ib_logfile0中的日志记录进行覆盖。如此循环重复。

    ib_logfile0 ib_logfile1 文件大小可以设置,最大为512G,一般情况下,最多设置为2-4G左右。

    在一些线上业务时,可以对ib_logfile0 ib_logfile1进行镜像备份。
    对此可衍生InnoDB存储引起机制下,若需要进行备份,
    1、需要对各数据库的库结构文件(.frm后缀文件)进行备份,
    2、需要对ibdata1文件进行备份,
    3、对ib_logfile0和ib_logfile1进行备份。
    这三种文件备份完后,拷贝至其他服务器上是可以进行完整恢复的。


    MyISAM 存储类型组织形式:每个数据表都有.frm、.MYD、.MYI三个文件形式进行保存。
    eg:
    user.frm #表结构文件
    user.MYD #数据文件
    user.MYI #数据索引文件

  • 相关阅读:
    极大似然估计理解与应用
    逻辑回归理解及代码实现
    《剑指offer》---数值的整数次方
    线性回归理解及代码实现
    二叉搜索树(BST)---python实现
    《剑指offer》---顺时针打印矩阵
    《剑指offer》---二进制中1的个数
    《剑指offer》---输出链表倒数第k个结点
    版本控制-Git服务器搭建和常用命令使用
    hbase伪分布式平台搭建(centos 6.3)
  • 原文地址:https://www.cnblogs.com/liuxc83/p/12837118.html
Copyright © 2011-2022 走看看