为了加快阅读过程,我想把blob从一个表转移到另一个表。但后来我看到堆栈溢出的其他人建议使用 MySQL barracuda ,因为这种方法消除了传输blob的需要。
Visitor_visit(表名) - >包含5个blob列。想把blob移到另一张桌子上。
那我应该使用哪种方法?我应该如何分开桌子?我是否需要为每个blob创建5个表以获得更好的性能?我不是MYSQL的期望。
我现在不想将图像存储在磁盘中。 (目前的情况不允许我这样做)
答案 0 :(得分:1)
Barracuda并没有像您想象的那样改变blob的储存方式。如果blob适合包含其他列行的数据页,则它将与这些列保持在一起。只有当斑点大于页面上的斑点时,它才会存储在页面外。
与Antelope比较,其中一个大blob也将主要存储在页外,但blob的前768个字节将与其他列一起存储在主页面上。所以我们只是在谈论blob的第一个3/4千字节存储方式的差异。
在这两种情况下,如果您只是不在查询中引用blob列(并且由于这个原因您不应该使用//declare the array of size 3
ClassOfStaticMethods[] SyskPin = new ClassOfStaticMethods[3];
//loop through the array
for (int i = 0; i < 3; i++) {
int kati = 5;
//create a new instance
ClassOfStaticMethods clas =
new ClassOfStaticMethods(2, 2.1, "something", 90, 100, kati);
//assign the new instance
//to the place holder in the array based on the index
SyskPin[i] = clas;
}
),InnoDB足够聪明以避免获取额外的blob它不需要的页面。你不必另外制作一个存储blob的表。
答案 1 :(得分:0)
让我们看一下表格架构(<script>
window.moveTo(0, 0);
window.resizeTo(screen.width, screen.height);
</script>
),一些blob大小的线索等等。
通常情况下,你不应该为5个blob做任何事情。一切都应该是自动的。
但是,存在一些聚合大小限制。同样,请提供更多细节如果您遇到了一些错误消息。
与此同时,我认为没有内在理由进行“垂直分区”。