Mysql DBA学习第一天

推荐书籍

  1. 入门可看 《深入浅出MySQL》《effective mysql》系列《官方文档》
  2. 中级 《MySQL技术内幕》《高可用MySQL》
  3. 进阶 《高性能MySQL》《数据库查询优化器的艺术》

计划在一个月能够完成日常运维的基本工作

由于是第一天开始准备学习mysql的知识,虽然之前大学的课程有简略的教授数据库的crub,但是如果要将他作为马上大三结束,大四实习的工作方向的话,仍是有很多不足的,所以计划一个月能够完成日常运维的基本工作,这样即使在九月份完成答辩,中途将自己的毕业设计完成,时间想必也是足够的,但由于之前的基础可能不是很扎实,所以免不了要多次重复学习。

接下来学习的版本均以mysql5.7为主,目前我所拥有的资料为唐汉明的《深入浅出MySQL 数据库开发、优化与管理维护》(第2版)以及王珊、萨师煊的数据库系统概论(第5版)。
在学习过程中,可能会遇到很多问题和不解,都会一一写到博客中来,虽然比较早接触到CSDN,但自己开始有系统化的撰写博文这还刚开始,因为自己还在学习中,如果有错误的地方,希望各位朋友能帮忙指点出来,这就是最好的学习了。自己学习过程的感悟和知识点的理解也会一一更新的。
**

第一阶段

时间: 1-2星期
目标:对Mysql有一个整体的认识


1.mysql有哪些存储引擎,分别有什么特点(InnoDB不得低于6点)

  • mysql5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB
    Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED、TokuDB(第三方存储引擎)等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。

  • 特点 MyISAM InnoDB MEMORY MERGE NDB
    存储限制 64TB 没有
    事务支持 支持
    锁机制 表锁 行锁 表锁 表锁 行锁
    B树索引 支持 支持 支持 支持 支持
    哈希索引 支持 支持
    全文索引 支持
    集群索引 支持
    数据缓存 支持 支持 支持
    索引缓存 支持 支持 支持 支持 支持
    数据可压缩 支持
    空间使用 N/A
    内存使用 中等
    批量插入的速度
    支持外键 支持

- MyISAM
MyIASM是MySQL默认的引擎,使用一种表格锁定的机制来优化多个并发的读写操作。需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。
优点:
1、MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器。
2、MyISAM存储引擎在查询大量数据时非常迅速,这是它最突出的优点。
3、另外进行大批量插入操作时执行速度也比较快。
4、单独保存了表的行数。
缺点:
1、MyISAM表没有提供对数据库事务的支持。
2、不支持行级锁和外键。
3、不适合用于经常UPDATE(更新)的表,效率低

- MEMORY(又称HEAP)
为了得到最快的响应时间,MEMORY引擎采用的逻辑存储介质是系统内存
优点:1、在内存中存储表数据具有很高的性能。2同时支持散列索引和B树索引。
缺点:1、MySQL守护进程崩溃是,所有memory数据都会丢失。2、不能使用长度可变的数据类型(如BLOB和TEXT),但varchar类型可用(varchar在MySQL内部被当做char类型)
以下几种情况适合使用Memory引擎:
1、目标数据较小,且被频繁访问。
2、表数据时临时的、且要求立即使用
3、Memory表数据丢、不会对应用服务产生实质影响


- CSV(Comma-Separated Values逗号分隔值)
使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中与该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型的文件当做表进行处理),这种文件是一种普通文本文件,每个数据行占用一个文本行。该种类型的存储引擎不支持索引,即使用该种类型的表没有主键列;另外也不允许表中的字段为null。


- ARCHIVE
ARCHIVE存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。
引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)。


- PERFORMANCE_SCHEMA
PERFORMANCE_SCHEMA引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)


- Merge
Merge引擎将一定数量的MyISAM表联合而成一个整体,且这些MyISAM表结构必须完全相同。如对每个月的日志表整合,用于生成一年的报表。


- BLACKHOLE(黑洞引擎)
该存储引擎支持事务,而且支持mvcc的行级锁,写入这种引擎表中的任何数据都会消失,主要用于做日志记录或同步归档的中继存储,这个存储引擎除非有特别目的,否则不适合使用。


-InnoDB
InnoDB存储引擎提供了具有提交、回滚、崩溃回复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。
下面将重点介绍存储引擎为InnoDB的表在使用过程中不同于使用其他存储引擎的表的特点

  1. 遵循ACID模式设计,具有与事务(Transactions),回滚和保护用户数据的崩溃恢复能力
  2. InnoDB 提供行级锁(Locking on row level),拥有与Oracle类似的不加锁读取(Non-locking read in SELECTs)。
  3. InnoDB锁定在行级,并在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户并发性和性能表现。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。
  4. InnoDB表基于主键在磁盘上安排数据,有优化的常见查询功能。每一个InnoDB表都有一个叫做聚集索引的主键索引,能尽可能减少数据查询次数。
  5. 为了维护数据完整性,InnoDB还支持外键完整性约束
    可以与其它MySQL存储引擎混合使用InnoDB表。例如,能用一个结合操作在一个单独查询中综合源自InnoDB和InnoDB表的数据。
  6. InnoDB是针对提高CPU效率而设计的,并且在处理大数据时表现最佳。
  7. 支持自增长列,对于InnoDB,自动增长列必须是索引。

    创建新表时如果不指定存储引擎,那么系统就会使用默认存储引擎,Mysql5.5之前的默认存储引擎是MyISAM,5.5之后改为了InnoDB,如果在参数文件中设置default-table-type.

参考资料: [https://blog.csdn.net/u014556057/article/details/70742367]

你可能感兴趣的:(mysql,DBA)