为什么不推荐在 MySQL 中直接存储图片、音频、视频等大容量内容?
为什么不推荐在 MySQL 中直接存储图片、音频、视频等大容量内容?
回答重点
MySQL 是关系型数据库,它设计的初衷是高效处理结构化和关系型数据,所以存储大容量的内容本身就不是它的职责所在,因此这方面的能力也不够。
应该将大容量文件存储在文件系统或云服务提供的对象存储服务中,仅在数据库中存储文件的路径或 URL 即可。
扩展知识
数据库本身性能问题
- 数据库性能:存储和检索大容量的二进制数据(如图片、音频、视频)会显著增加数据库的 I/O 操作和处理时间,从而影响整体性能。
- 查询性能:大容量的二进制数据会增加数据表的大小,导致查询性能下降。尤其是在涉及表连接或复杂查询时,性能影响更大。
可扩展性问题
文件系统可以通过分布式文件系统(如 Hadoop HDFS、Amazon S3)更容易地进行扩展,而数据库扩展则复杂得多。
权限控制问题
像文件系统和对象存储系统(如 Amazon S3、OSS 等)通常提供更灵活的访问控制和权限管理机制,适合处理大容量数据的存储和访问,例如访问的时效性等等,而 MySQL 不提供这些功能,需要我们应用程序额外开发。
Comments