《mysql性能调优与架构设计》笔记: 二存储引擎

3.1 概述:

1,MYISAM 是mysql 5.5以前版本的默认引擎,5.5以后默认存储引擎是innodb

2、查看mysql存储引擎命令,在mysql>提示符下搞入show engines;字段 Support为:Default表示默认存储引擎

3、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句

3.2 MYISAM存储引擎概述:

1,MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件  .frm,.MYI,MYD三个文件的作用第二章中以说明;注意,不管某个表有多少个索引,都是存放在MYI这个文件中

2, MyISAM 支持以下三种类型的索引:

1、B-Tree 索引

B-Tree 索引,顾名思义,就是所有的索引节点都按照 balance tree 的数据结构来 存储,所有的索引数据节点都在叶节点。

2、R-Tree 索引

R-Tree 索引的存储方式和 b-tree 索引有一些区别,主要设计用于为存储空间和多 维数据的字段做索引,所以目前的 MySQL 版本来说,也仅支持 geometry 类型的字段作索引。

3、Full-text 索引

Full-text 索引就是我们长说的全文索引,他的存储结构也是 b-tree。主要是为了 解决在我们需要用 like 查询的低效问题。

3,MyISAM 存储引擎的某个表文件出错之后,仅影响到该表,而不会影响到其他表,更不 会影响到其他的数据库

4,如果我们正在运行过程中发现某个 MyISAM 表出现问题了, 则可以在线通过 check table 命令来尝试校验他,并可以通过 repair table 命令来尝试修

复。在数据库关闭状态下,我们也可以通过 myisamchk 工具来对数据库中某个(或某些) 表 进行检测或者修复。不过强烈建议不到万不得已不要轻易对表进行修复操作,修复之前尽量 做好可能的备份工作,以免带来不必要的后果

3.3 Innodb 存储引擎简介

1、支持事务安装

2,数据多版本读取

3,锁定机制的改进 -- 行级锁

4、实现外键

5,Innodb 的物理结构分为两大部分:

<1>数据文件(表数据和索引数据):

表空间:一种是共享表空间,也就是所有表和索引数据被存放 在同一个表空间(一个或多个数据文件)中,通过 innodb_data_file_path 来指定,增加数

据文件需要停机重启。

另外一种是独享表空间,也就是每个表的数据和索引被存放在一个 单独的.ibd 文件中。

6,虽然我们可以自行设定使用共享表空间还是独享表空间来存放我们的表,但是共享表空 间都是必须存在的,因为 Innodb 的 undo 信息和其他一些元数据信息都是存放在共享表空间 里面的。共享表空间的数据文件是可以设置为固定大小和可自动扩展大小两种形式的,自动 扩展形式的文件可以设置文件的最大大小和每次展量。在创建自动扩展的数据文件的时候,建议大家最好加上最大尺寸的属性,一个原因是文件系统本身是有一定大小限制的(但 是 Innodb 并不知道),还有一个原因就是自身维护的方便。另外,Innodb 不仅可以使用文 件系统,还可以使用原始块设备,也就是我们常说的裸设备。 当我们的文件表空间快要用完的时候,我们必须要为其增加数据文件,当然,只有共享 表 空 间 有 此 操 作 。 共 享 表 空 间 增 加 数 据 文 件 的 操 作 比 较 简 单 , 只 需 要 在 innodb_data_file_path 参数后面按照标准格式设置好文件路径和相关属性即可,不过这里 有一点需要注意的,就是 Innodb 在创建新数据文件的时候是不会创建目录的,如果指定目

录不存在,则会报错并无法启动。另外一个较为令人头疼的就是 Innodb 在给共享表空间增 加数据文件之后,必须要重启数据库系统才能生效,如果是使用裸设备,还需要有两次重启 。 这也是我一直不太喜欢使用共享表空间而选用独享表空间的原因之一

时间: 2024-11-02 21:35:59

《mysql性能调优与架构设计》笔记: 二存储引擎的相关文章

mysql性能调优与架构设计笔记

1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.mysql架构组成 麻雀虽小五脏俱全,mysql虽然简单但其内部结构并不简单; mysql物理文件组成之日志文件: 错误日志error log这里记录mysql运行时严重的警告和错误,以及mysql启动和关闭的日志信息 二进制日志 binary log 记录mysql运行时所有的query和query执

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限.本章将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼. 9.1 高效的模型设计 最规范的就一定

MySQL性能调优与架构设计——第1章 MySQL 基本介绍

MySQL性能调优与架构设计——第1章 MySQL 基本介绍 前言:作为最为流行的开源数据库软件之一, MySQL 数据库软件已经是广为人知了. 但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介绍.主要内容包括MySQL 各功能模块组成,各模块协同工作原理, Query 处理的流程等. 1.1 MySQLServer 简介 1.1.1 什么是 MySQLMySQL 是由MySQL AB公司(目前已经被SUN公司收归麾下,SUN已经被Oracle收购)自主研发的,目

MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出现异常的可能,监控系统就是根据系统的各项状态的分析,让我们能够尽可能多的提前预知系统可能会出现的异常状况.即使没有及时发现将要发生的异常,也要在异常出现后的第一时间知道系统已经出现异常,否则之前的设计工作很可能就白费了. 18.1 监控系统设计 系统监控

MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库系统一旦出现问题无法提供服务,所有系统都可能无法继续工作,而不像软件中部分系统出现问题可能影响的仅仅只是某个功能无法继续服务.所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的.本章内容将针对如何构建一个高可用的 MySQL 数据库系统来介绍各种解决方案以及方案之间的比较. 17.1 利用

MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许找其他技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术. 14.1 何谓数据切分 可能很多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了,只不过在有些文章中称之为数据的 Sharding.其实不管是称之为数据的 Shard

[转]MySQL性能调优与架构设计&mdash;&mdash;第11章 常用存储引擎优化

第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处.如何将各种存储引擎在自己的应用环境中结合使用,扬长避短,也是一门不太简单的学问.本章选择最为常用的两种存储引擎进行针对性的优化建议,希望能够对读者朋友有一定的帮助. 11.1 MyI SAM存储引擎优化 我们知道,MyISAM存储引擎是MySQL最为古老的存储引擎之一,也是最为流行的存储引擎之一.对

MySQL性能调优与架构设计——第11章 常用存储引擎优化

第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处.如何将各种存储引擎在自己的应用环境中结合使用,扬长避短,也是一门不太简单的学问.本章选择最为常用的两种存储引擎进行针对性的优化建议,希望能够对读者朋友有一定的帮助. 11.1 MyI SAM存储引擎优化 我们知道,MyISAM存储引擎是MySQL最为古老的存储引擎之一,也是最为流行的存储引擎之一.对

MySQL性能调优与架构设计——第13章 可扩展性设计之 MySQL Replication

第13章 可扩展性设计之 MySQL Replication 前言: MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 Instance 中.虽然复制过程并不是实时而是异步进行的,但是由于其高效的性能设计,延时非常之少.MySQL 的Replication 功能在实际应用场景中被非常广泛的用于保证系统数据的安全性和系统可扩展设计中.本章将专门针对如何利

MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力的系统,也就是说,我们必须进行可扩展设计.可扩展设计是一个非常复杂的系统工程,所涉及的各个方面非常的广泛,技术也较为复杂,可能还会带来很多其他方面的问题.但不管我们如何设计,不管遇到哪些问题,有些原则我们还是必须确保的.本章