MySQL是如何使用内存和磁盘的?
这几天在中国移动音乐基地(四川成都)这儿培训MySQL Developer课程,当中萌生了个想法,采用提问的方式,然后筛选出合适的命题做介绍。
比如:MySQL是如何使用内存和磁盘的?
呵呵,被骗进来的朋友别生气,今天实在是太晚了,明早还要去上课,明后天补上。
这篇是普及MySQL基本知识的,介绍MySQL是如何使用磁盘和内存的,从手册上可以找到。
磁盘空间的占用:
- 每个数据库对应MySQL数据目录下的一个目录,不管你是采用什么存储引擎。
- 每张数据表都在其对应的数据库目录下有一个table_name.frm文件,存储的是表定义信息,有64KB的限制。
- MyISAM引擎表在其数据库目录下对应3个文件,包括上面的frm文件,还有数据文件和
目录索引文件。 - Innodb有自己的表空间和redo日志文件。
- MySQL还有自己的日志文件,包括error log, binary log, general log等。
- 触发器存储在对应的数据库目录下。
- 认证信息存储在MySQL系统表里,在mysql库下。
- 另外mysqld服务器程序和其他一些客户端管理工具等也需要占用一定的磁盘空间。
内存的占用:
- 线程管理,服务器程序为了提高效率,会将一些信息存储于buffer(cache)。
- Memory(HEAP)引擎将数据存储在
那种中内存中。 - 临时表如果没有超过设定的限制会存储在内存中。
- 每个客户端连接都会使用一定的buffer空间
- 全局的Buffer和Cache(比如MyISAM的keybuffer,InnoDB的buffer pool, Query cache等 )
分类: MySQL
有两处笔误,忘作者修改过来
MyISAM引擎表在其数据库目录下对应3个文件,包括上面的frm文件,还有数据文件和目录文件。—(目录文件)
上面的目录文件应该改成“索引文件”
内存的占用
Memory(HEAP)引擎将数据存储在那种中。—-(那种)
那种应该指的“内存”
@虎子
已修正。不知道那个”索引文件”怎么打成”目录文件”了,纠结…