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 #数据索引文件

  • 相关阅读:
    uva 11294 Wedding
    uvalive 4452 The Ministers’ Major Mess
    uvalive 3211 Now Or Later
    uvalive 3713 Astronauts
    uvalive 4288 Cat Vs. Dog
    uvalive 3276 The Great Wall Game
    uva 1411 Ants
    uva 11383 Golden Tiger Claw
    uva 11419 SAM I AM
    uvalive 3415 Guardian Of Decency
  • 原文地址:https://www.cnblogs.com/liuxc83/p/12837118.html
Copyright © 2011-2022 走看看