我以前使用过mysql,但我不明白它是如何在内部工作的。有人能指点我一个很好的资源,说明磁盘上的数据的内部表示看起来像也可能讨论如何快速地搜索和访问事物?更好的是,有人能够提出一个高层次简洁的解释吗?mysql数据如何存储在磁盘上?
9
A
回答
12
MySQL服务器以多种方式使用磁盘空间,主要用于在称为服务器数据目录的单个位置下找到的目录和文件。服务器使用其数据目录存储以下所有内容:
- 数据库目录。无论您在数据库中创建什么类型的表,每个数据库都对应于数据目录下的单个目录。例如,给定的数据库由一个目录表示,不管它包含MyISAM表,InnoDB表还是两者的组合。
- 包含表结构描述的表格格式文件(.frm文件)。每个表都有自己的.frm文件,位于相应的数据库目录中。无论哪个存储引擎管理表格,情况都是如此。
- 数据和索引文件是由某些存储引擎为每个表创建的,并放置在相应的数据库目录中。例如,MyISAM存储引擎为每个表创建一个数据文件和一个索引文件。
- InnoDB存储引擎有它自己的表空间和日志文件。表空间包含所有InnoDB表的数据和索引信息,以及必须回滚事务时所需的撤消日志。日志文件记录关于已提交事务的信息,并用于确保不发生数据丢失。默认情况下,表空间和日志文件位于数据目录中。默认的表空间文件名为ibdata1,默认的日志文件名为ib_logfile0和ib_logfile1。 (也可以将InnoDB配置为每个表使用一个表空间文件,在这种情况下,InnoDB为表的数据库目录中的给定表创建表空间文件。)
- 服务器日志文件和状态文件。这些文件包含有关服务器已处理的语句的信息。日志用于复制和数据恢复,获取用于优化查询性能的信息,并确定操作问题是否正在发生。
+0
很好的答案,安静的许多信息,你写这一切都从你的记忆?如果可能的话请为未来的研究添加一些参考。 – rekire
+0
我在研究MySQL存储时发现了这些信息。这是在MySQL DBA博客 – 2013-06-06 05:12:06
+0
@PeterVenderberghe中提到的一个好的... – 2013-06-06 05:14:13
相关问题
- 1. MongoDB数据库中的数据如何存储在磁盘上?
- 2. MySQL的varchar数据类型..如何获取存储在磁盘
- 3. Apache Cassandra磁盘上的数据存储
- 4. 加密Mysql数据库存储在磁盘上的文件
- 5. 如何将JSON数据存储在磁盘上?
- 6. 数据如何存储在磁盘上? - EFI GUID
- 7. 数据库记录如何存储在磁盘上?
- 8. RavenDB Embedded:存储在磁盘上的数据在哪里?
- 9. RDFlib'磁盘'存储
- 10. RavenDB磁盘存储
- 11. 将会话存储在磁盘上
- 12. Django:在磁盘上存储InMemoryUploadedFile
- 13. 在磁盘或MongoDB上存储文件
- 14. 如何将存储过程的输出存储到磁盘上
- 15. 如何根据磁盘路径确定数据存储?
- 16. 将未使用的类数据成员存储在磁盘上
- 17. MongoDB - 在磁盘上存储SSD和数据收集索引?
- 18. Spark shuffle为什么在磁盘上存储中间数据?
- 19. MySQL的performance_schema数据库中的信息是否存储在磁盘上?
- 20. SQL Server 2014如何使用磁盘空间来存储数据
- 21. MySQL查询在磁盘上
- 22. 如何System.Windows.Controls.Image存储到本地磁盘
- 23. 如何将对象存储到磁盘?
- 24. 磁盘上的数据库存储,最佳实践
- 25. 磁盘上的InfluxDB存储大小
- 26. 磁盘上的JackRabbit存储库
- 27. 如何将磁盘大小配额放在git存储库上?
- 28. CouchDB中的视图如何存储在磁盘上?
- 29. 如何扩展未存储在磁盘上的Jade模板?
- 30. 如何在磁盘上存储大型图形
这个问题值得一些真正的好研究,而不仅仅是一个问题答案会话,可能更适合于http://dba.stackexchange.com –
“Pro MySQL”这本书对此过程进行了相当彻底的解释。 – Marty
恕我直言,这取决于您使用的MyISSAM和InnoDB结构的存储引擎是安静的不同。然而AFIK的所有使用D或KD树(我不知道K现在)。 – rekire