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. Git 初级使用 windows & Ubuntu

    目的:有一段代码要进行几个人同时维护,但是传来传去不方便,所以希望在github上实现,前提是每台机器都有git 在github 上新建一个项目 然后会看到,大体上就按这执行就可以 在Windows系 ...

  2. Java 设计模式之抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...

  3. 微信小程序框架分析小练手(二)——天气微信小程序制作

    简单的天气微信小程序. 一.首先,打开微信开发者工具,新建一个项目:weather.如下图: 二.进入app.json中,修改导航栏标题为“贵州天气网”. 三.进入index.wxml,进行当天天气情 ...

  4. 批量解析域名为IP地址的python脚本

    脚本如下: #!/usr/bin/env python #coding:utf- import os,sys from socket import gethostbyname DOMAIN= &quo ...

  5. 构造UTF8的std::string

    在VC++的世界里,MS比较鼓励使用_UNICODE,std::wstring.而在Web, XML则提倡用UTF8.当在C++的程序里要保存/读取XML数据,就存在wstring与string之间的 ...

  6. 【WPF学习】第四十一章 变换

    通过使用变换(transform),许多绘图任务将更趋简单:变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象.在WPF中,变换由继承自System.Windows.Med ...

  7. POJ_1088_dfs

    http://poj.org/problem?id=1088 dfs过程中,保存经历过的点的最大滑雪距离,依次遍历每一个点的最大距离即可. #include<iostream> #incl ...

  8. ARTS Week 13

    Jan 20, 2020 ~ Jan 26, 2020 Algorithm Problem 141 Linked List Cycle (环形链表) 题目链接 题目描述:给定一个链表,判断链表中是否存 ...

  9. 3、实战:OutOfMemoryError异常

    目的:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容:第二,工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢 ...

  10. Go语言实现:【剑指offer】斐波那契数列

    该题目来源于牛客网<剑指offer>专题. 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0) n<=39 Go语言实现: 递归: ...