zoukankan      html  css  js  c++  java
  • MySQL ------ 简介与存储引擎

    一、简介

    MySQL 一个开放源代码的关系型数据库管理系统(RDBMS),速度,可靠行性、适应性较棒,在不需要支持事务处理的情况下,是管理内容的最好选择

    有两个版本:社区版和企业版

      社区版:可自由下载且完全免费,但是官方不提供任何技术支持,适用于大多数普通用户

      企业版:不能自由下载且收费,该版本提供了更多的功能,可以享受完备的技术支持,适用于对数据库的功能和可靠性要求比较高的企业用户。

    MySQL更新较快,一些主要的优势有: 运行速度快,成本低,容易使用,可移植性强,适用于更多用户

     关系型数据库存储,可以看成各个表之间存有联系的数据库,其中表存储实体。

      其中,实体可以解释为所有客观存在的可以被描述的事物。这个实体可以通过一些特性的描述构成,和面向对象中的变量一样,而在数据库中,使用表中的列(column)表示也叫字段,每一行表示对应这一个实体,可以看成一个对象,在数据库中专业的叫法是记录(record)。

    表之间的关系通过键、类型、规则、权限、约束等描述实现,一些常见的操作对象有存储过程、视图、游标等

     ------------------------------------------------------------------------

    1、数据库管理系统(DBMS): 由一个互相关联的数据集合和一组访问数据的程序构成。一个管理数据库的系统软件,

           主要面对的操作对象是数据库

      包括数据库以及用于访问管理数据库的接口系统。

      基本目标是提供一个可以方便有效的存储数据信息的环境

      主要功能是维护数据库,并有效的访问数据库中各个部分的数据

    注意:严格意义上来将MySQL 是数据库管理系统,不过我们通常也会将数据管理系统成为数据库。

     2、数据库系统 (DBS):一个 实际可以运行的系统,可以对系统提供的数据进行存储、维护和应用,由存储介质、处理对象和管理系统共同组成的集合体通常由软件、数据库以及数据库管理员组成。

    3、数据库管理员(DBA):指在数据库系统中负责创建、监控和维护整个数据库的专业管理员。

    --------------------------------------------------------------------------

    数据库设计

    4、数据冗余(Redundance):在数据库系统中,数据重复出现的现象,减少数据冗余的最常见的方法就是分类存储,虽然会使表显得更加独立,但是会增加数据查找的复杂性,降低了效率,因此在设计时允许存在必要的冗余。

    5数据完整性(Integrality):指数据库中数据的准确性。实际中就是:当两个表或多个表存储的信息相互关联时,当修改其中一个表中的数据时,其他相关联的表也要进行修改

    6、主键(Primary Key): 表中唯一标识这一行的列,用于强制数据完整性。

              一般一个表中只能有一个主键且不能为null,当由两列或多列组合起来,来唯一标识表中每一行的主键叫复合主键。

    选择列作为主键时要考虑最少性和稳定性两个原则:

    最少性:指列数最少的键。字面上意思一个表中有单个主键和复合主键当然选单一主键,操作一列比多列快,简单(当然两个整数类型列组合要比一个很大字符类型的列要快)

    稳定性:指列中数据不发生改变。由于主键是联系两个表或多个表之间的纽带,所以不能经常更新,最好永远不变

    7、外键():相对于主键而言的键,从表中对应于主表的列,就是从表中含有主表的主键,在从表中有一个专门描述的词叫外键或引用键

               特点:为了强制引用的完整性,避免关联错误,一个表可以有多个外键

    ----------------------------------------------

    安装配置

    下载地址:

    https://dev.mysql.com/downloads/mysql/

    默认端口:3306

     -----------------------------------------------------

    二、存储引擎

    上述我们明白MySQL属于数据库管理系统,其中包括数据库以及用于数据库访问管理的接口系统。

    数据库负责存储数据,接口系统负责管理数据库。由于不同的对数据的容量、访问速度、数据安全性有不同的要求,为了满足不同用户的业务需求,MySQL采用 多种存储引擎进行数据存储。

    存储引擎的作用:指定了表的存储类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。

    MySQL 5.5 支持的存储引擎有:InnoDB、MyISAM、MEMORY、MRG_MyISAM、ARCHIVE、FEDERATED、CSV、BLACKHOLE、PERFORMANCE_SCHEMA  九种。

    -- 查看系统支持的引擎类型
    show engines;

    Support 列的值表示某种引擎是否能使用,YES表示可以使用,NO表示不能使用,DEFAULT表示该引擎为当前默认的存储引擎。

    Transactions列的值表示是否支持事务,Yes表示支持,NO表示不支持

    1、常用的存储引擎 InnoDB和MyISAM

     InnoDB和MyISAM的使用场合:

      InnoDB存储引擎:在事务处理上有优势,支持具有提交、回滚和 崩溃恢复能力的事务控制,所以比MyISAM引擎占用更多有的磁盘空间。因此对需要进行频繁的更新、删除操作同时还对事务的完整性要求比较高,需要实现并发控制的应用,适合使用该存储引擎。

      MyISAM存储引擎:该存储引擎不支持事务也不支持外键约束,访问速度比较快。因此对于不要事务处理,以访问为主的应用适合使用该存储引擎。

    2、查看更改默认的操作引擎

    由上通过查询系统支持引擎可知mysql默认的存储引擎是InnoDB,也可以借助以下进行查询

    -- 查询默认操作引擎 storage_engine 关键字
    show variable like 'storage_engine%'

    修改默认操作引擎

    通过配置向导和修改配置文件 my.ini 来实现。

    修改my.ini 时,只需要修改  default-storage-engine = InnoDB ,将InnoDB 换成你需要的

    default-storage-engine = InnoDB

    注意:修改完之后需要重启MySql 服务。

    3、指定表的存储引擎

    数据表默认使用当前MySQL默认的存储引擎,为了达到表的特殊需求,可以重新设置表的存储引擎

    -- 指定表的存储引擎
    create table 表名(
    ...
    )engine = 存储引擎;

    如将 表 tb_test的存储引擎设置为 MyISAM类型

    create table tb_test(
     ID int(6) 
    )engine=MyIsAM

    4、MySQL的数据文件

    (1)、数据文件存储位置

    不同操作系统数据文件的默认存储位置不同,可以通过配置文件my.ini 中的参数datadir 获取或修改该路径

    -- 在Windows 7 操作系统中 MySQL数据文件默认 的存储位置为
    C:ProgramDataMySQLMySQL Server 5.5data
    -- 在my.ini中进行修改
    datadir="C:/ProgramData/MySQL/MySQL Server 5.5/data/"

    该目录下,每个数据相关文件均放在以数据库命名的文件夹中

    (2)、MyISAM类型的表文件

    存储引擎为MyISAM 类型的表文件,与之相关的数据文件有三个,扩展名分别为 .frm, .MYI, .MYD

      .frm文件 : 表结构定义文件。主要存放表的元数据,包括表结构定义信息等,该文件与存储引擎无关。(任何存储类型的表都会有这个文件,存放位置在数据库名文件目录下)

      .MYI文件:索引文件。主要存放MyISAM 类型表的索引信息,每个MyISAM 类型的表都会有一个 .MYI 文件 ,存放的位置与  .frm文件相同

      .MYD文件:数据文件。存放表中数据的文件。存放的位置与  .frm文件相同

    (3)、InnoDB 类型的表文件

    存储引擎为MyISAM 类型的表文件,与之相关的数据文件有两个, 表名.frm 和 idbatal 文件

      .frm文件 : 表结构定义文件。主要存放表的元数据,包括表结构定义信息等,该文件与存储引擎无关。(任何存储类型的表都会有这个文件,存放位置在数据库名文件目录下)

      ibdatal 文件:数据文件。保存所有InnoDB 类型表的数据。这个文件保存位置与 .frm 位置不同,可以通过my.ini 文件中的参数 innodb_data_home_dir 查询或修改

    如: xxxxxxxxxxx

    innodb_data_home_dir = "E:/MySQL Datafiles/"
  • 相关阅读:
    Tomcat自定义classLoader加密解密
    阿里巴巴2015秋季校园招聘研发工程师在线笔试题
    【Machine Learning】Mahout基于协同过滤(CF)的用户推荐
    基于Jenkins自动构建系统开发
    反射invoke()方法
    java对象序列化与反序列化
    从文本文件逐行读入数据
    Linux下MySQL小尝试
    【Html 学习笔记】第四节——框架
    穷举法
  • 原文地址:https://www.cnblogs.com/obge/p/13493790.html
Copyright © 2011-2022 走看看