Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何归档最少使用的数据?_Mysql_Hibernate_Persistence - Fatal编程技术网

Mysql 如何归档最少使用的数据?

Mysql 如何归档最少使用的数据?,mysql,hibernate,persistence,Mysql,Hibernate,Persistence,环境:JSF2、Hibernate持久化、MySQL 我有一个数据库,因为有一个包含图像数据的表,所以它正在快速填充。该数据永远不会被搜索,而只能由id直接访问。问题是它留在数据库中,因此会扩大数据库的备份和运行时内存使用 我认为可能有多种解决方案: 告诉MySQL表不应该被缓存和/或保存在内存中 对于那个表,根本不要使用MySQL。只要让持久性知道这应该直接存储在磁盘上 但我也没有找到一个方法。请给我一些建议 谢谢, Milo van der Zee存储类型取决于MySQL中的存储引擎。

环境:JSF2、Hibernate持久化、MySQL

我有一个数据库,因为有一个包含图像数据的表,所以它正在快速填充。该数据永远不会被搜索,而只能由id直接访问。问题是它留在数据库中,因此会扩大数据库的备份和运行时内存使用

我认为可能有多种解决方案:

  • 告诉MySQL表不应该被缓存和/或保存在内存中
  • 对于那个表,根本不要使用MySQL。只要让持久性知道这应该直接存储在磁盘上
但我也没有找到一个方法。请给我一些建议

谢谢,
Milo van der Zee

存储类型取决于MySQL中的存储引擎。只有具有内存存储引擎的表存储在RAM中,其他表存储在磁盘上

在选择查询中,您可以使用
selectsql\u NO\u CACHE
告诉MySQL不要在MySQL查询缓存中缓存查询数据

您可以通过在表上定义分区来对表进行分区。这将使插入和选择更快


您还可以创建日期表(如table_name_2012_07_20)和具有旧日期的存档表,并以压缩格式存储数据。您可以使用存档存储引擎,或者如果您使用的是MyIsam存储引擎,则可以使用myisamchk或myisampack来节省硬盘上的磁盘空间。

谢谢。这看起来很有希望。还有一个问题。对表进行分区是否也会将它们从内部MySQL内存中删除?我不是说查询缓存,而是说MySQL更喜欢将所有内容都存储在内存中。我永远都不想把这个记在记忆里。它偶尔会被查询,我不想仅仅为了这个就把有价值的数据从内存中挤出。