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-error和log-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;

 

索引的存储结构

 

MySQL概述及入门(二)的更多相关文章

  1. MySql概述及入门(五)

    MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...

  2. MySQL概述及入门(四)

    MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...

  3. MySQL概述及入门(三)

    MySql概述及入门(三) MySQL性能优化 主要优化安全和性能方面 安全方面 : 数据可持续性 性能方面 : 数据的高性能访问 性能优化——慢查询 在MySQL数据库中有一个慢查询日志功能,去获取 ...

  4. MySQL概述及入门(一)

    MySql概述及入门(一) 什么是MySQL?    MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...

  5. mysql之SQL入门与提升(二)

    在mysql之SQL入门与提升(一)我们已经有了些许基础,今天继续深化 先造表 SET NAMES utf8;SET FOREIGN_KEY_CHECKS = 0; -- -------------- ...

  6. MySQL数据库快速入门与应用实战(阶段一)

    MySQL数据库快速入门与应用实战(阶段一) 作者 刘畅 时间 2020-09-02 实验环境说明: 系统:centos7.5 主机名 ip 配置 slavenode3 172.16.1.123 4核 ...

  7. IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)

    1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...

  8. 脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

    1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机 ...

  9. [转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

    脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?     http://www.52im.net/thread-1732-1-1.html   1.引言 本文接上篇<脑残式网 ...

随机推荐

  1. CentOS 7 上CNVnator安装

    1.到github上下载最新版本 https://github.com/abyzovlab/CNVnator/releases 2.先看INSTALL文件,要求以下依赖,我的机器上已经安装了前两个,所 ...

  2. 使用GoldenGate完成MySQL到MySQL的同步

    (一)基础环境配置   源库 目标库 操作系统版本 CentOS Linux release 7.4 CentOS Linux release 7.4 IP地址 192.168.10.11 192.1 ...

  3. JSP&Servlet学习笔记----第1/2章

    HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...

  4. VS debug下为什么多此一举jmp函数地址?

    VS debug下为什么call 函数后,会jmp函数地址?多此一举? http://blog.csdn.net/viper/article/details/6332934 在写跑在main之前的时候 ...

  5. [apue] 书中关于伪终端的一个纰漏

    在看 apue 第 19 章伪终端第 6 节使用 pty 程序时,发现“检查长时间运行程序的输出”这一部分内容的实际运行结果,与书上所说有出入. 于是展开一番研究,最终发现是书上讲的有问题,现在摘出来 ...

  6. Codeforces_734_F

    http://codeforces.com/problemset/problem/734/F x|y + x&y = x+y. #include<iostream> #includ ...

  7. 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)

    郑重声明: 本文仅供学习使用,禁止用于非法用途,否则后果自负,如有侵权,烦请告知删除,谢谢合作! 开篇明义 本文针对自主开发的抢票脚本在抢票过程中常常遇到的请求无效等问题,简单分析了 12306 网站 ...

  8. 大数据篇:HDFS

    HDFS HDFS是什么? Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File Syste ...

  9. 在Thinkphp3.1中使用Mongo的具体操作

    最近研究Mongo项目都是用TP开发的,先介绍下Mongo在TP3.1中的用法 首先要确保你的PHP环境中已经安装好Mongo扩展,在实际项目中大多数都是Mysql数据库为主的,那么如何添加一个Mon ...

  10. DNS 查询 - Domain Name Server

    DNS 查询 - Domain Name Server socket.getaddrinfo("www.baidu.com",None) 返回时一个 tuple list - (f ...