让我们先引用:
实体中所有属性的组合大小不能超过1MB。 (对于ROW / Entity)来自msdn
我的问题:由于所有内容都是XML数据,因此1MB,1MB的ASCII字符,1MB的UTF8字符或其他东西?
示例:
Row1: PartitionKey="A', RowKey="A", Data="A"
Row2: PartitionKey="A', RowKey="A", Data="A" (this is a UTF8 unicode A)
Row1和Row2的大小(长度)相同,还是Row2.Length=Row1.Length+1
?
答案 0 :(得分:12)
示例中的单个列(如“数据”)限制为64 KB的二进制数据,单行限制为1 MB的数据。字符串以UTF8格式编码为二进制,因此限制是字符串大小最终为您的字符串。如果您希望列存储超过64 KB的数据,则可以使用通过Lokad(https://github.com/Lokad/lokad-cloud-storage/blob/master/Source/Lokad.Cloud.Storage/Azure/FatEntity.cs)提供的FAT实体等技术。该技术非常简单,您只需将字符串编码为二进制,然后将二进制文件拆分为多列。然后,当您想要从表中读取字符串时,您只需再次重新连接列并将二进制文件转换回字符串。
答案 1 :(得分:10)
Azure表行大小计算非常复杂,包括属性名称的大小及其值加上一些开销。
编辑。删除了早先声称尺寸计算稍微不准确的声明。这很准确。