zoukankan      html  css  js  c++  java
  • MySQL概述及入门(二)

    MySql概述及入门(二)


    MySQL架构

      逻辑架构图:

            

      执行流程图:

            

            

    MySQL的存储引擎

    查询数据库支持的存储引擎

    执行: show engines;

    多存储引擎是mysql有别于其他数据库的一大特性,存储引擎是针对表的,MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB。

    InnoDB 引擎: 支持AUTO_INCREMENT(自增列),支持外键(FOREIGN KEY),创建的表的表结构存储在.frm文件中,优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

    MyISAM 引擎: 曾经是MySQL的默认存储引擎,优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

    MySQL日志文件

    MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志

    日志刷新 :  mysql> FLUSH LOGS;

            shell> mysqladmin flush-logs

            shell> mysqladmin refresh

    错误日志 : 默认是开启的,而且从5.5.7版本以后无法关闭错误日志,它记录了MariaDB/MySQL服务启动和停止的信息,还记录了mysqld实例运行过程中发生的错误事件信息。

           默认的错误日志名称:hostname.err , hostname表示当前的主机名

           如果不知道错误日志的位置,可以通过  show variables like 'log_error'; 来查看。

           错误日志所记录的信息是可以通过log-errorlog-warnings来定义的,其中log-error是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。

     

    二进制日志 : 以事件形式记录的,不是事务日志(但可能是基于事务来记录二进制日志) 默认是关闭的,需要通过配置:log-bin=mysql-bin 进行开启。

           其中mysql-bin是binlog日志文件的basename,binlog日志文件的名称:mysql-bin-000001.log

           binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容

           binlog还包括了每个更新语句的执行时间信息,binlog主要作用是用于恢复数据,因此binlog对于s灾难恢复和备份恢复来说至关重要

     

    查询日志 :   默认情况下查询日志是关闭的。由于查询日志会记录用户的所有操作,其中还包含增删查改等信息,会影响mysql的性能

          如若不是为了调试数据库的目的建议不要开启查询日志。

     

    慢查询日志 : 默认关闭的,需要通过设置slow_query_log=ON进行开启

            记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句

     

    事务日志(redo log) :    InnoDB特有的日志 , 也叫redo日志。

           事务日志包括两部分:一是内存中的日志缓冲(redo log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redo log file),该部分日志是持久的。

           文件名为"ib_logfile0"和“ib_logfile1”,默认存放在表空间所在目录。 还有一个日志文件叫undo 日志,默认存储在ib_data目录下。

     

    MySQL索引

    为什么使用索引 : 1 .使用索引的主要目的是为了优化查询速度

            2.索引可以帮助我们进行排序以避免以避免使用临时表

            3.保证数据的准确性 

    什么是索引 : 通俗解释 索引就像是图书的目录,根据目录中的页码快速找到所需内容。

    索引的类型:

        单列索引:

            普通索引:仅加速查询 最基本的索引,没有任何限制,允许在定义索引的列中插入重复值和空值 是我们大多数情况下使用到的索引。

            唯一索引:索引列中的值必须是唯一的,但是允许为空值,

            主键索引:是一种特殊的唯一索引,不允许有空值。

        组合索引: 将几个列作为一条索引进行检索,使用组合索引时遵循最左前缀集合

        全文索引: 全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。

    索引的使用:

    创建索引:

    CREATE INDEX index_name ON table(column(length))

    ALTER TABLE table_name ADD INDEX index_name ON (column(length))

     

    CREATE UNIQUE INDEX index_name ON table(column(length))

    CREATE FULLTEXTINDEX index_name ON table(column(length))

     

    ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))

     

     删除索引:

    drop index_name on healerjean;

    alter TABLE users drop index name_index ;

    查看索引:

    show index from healerjean;

     

    索引的存储结构

     

     

  • 相关阅读:
    软件开发者路线图 从学徒到高手 读后感
    Greplin:搜索你的所有在线社交内容
    黄小琥 / 简单/不简单 / 没那么简单
    讯雷 云系列 不错
    来自Amazon、Cloudera、Microsoft与IBM的HadoopasaService
    FAQs and feedback
    I've Never Been To Me by Charlene with lyrics
    烧香网 历害
    4A公司
    一个新的比较网站,做的不错
  • 原文地址:https://www.cnblogs.com/llkang/p/12104273.html
Copyright © 2011-2022 走看看