2012-06-03 29 views
1

我需要幫助理解爲什麼我堅持使用數據存儲的模型對象之一爲什麼要花費太多的寫操作。在dev控制檯中查看數據存儲區查看器,它說我需要31個寫入操作來創建此對象;點擊查看Indexes鏈接,我可以看到,這是你的對象定義(如預期)兩項指標,並閱讀文檔:爲什麼寫操作對我的對象計數如此之高?

新實體認沽(每實體,無論實體大小):2次寫操作每個索引屬性值+ 2寫入每個組合索引值+ 1個寫

所以,如果我理解正確的話,創建或刪除對象的成本2個寫入+ 2個寫操作* 2索引屬性值+ 0(我沒有複合索引值)= 6寫操作?

要修改:

(每實體)1個寫現有實體穿戴+ 4%改性的索引屬性值寫入+ 2%經修改的複合指數值寫入

應該花費1個寫入如果非索引屬性被修改,5(或9)如果一個或兩個索引屬性被修改?我很困惑,爲什麼開發者控制檯報告所需31個寫OPS ...

的對象如下:

public class Media implements IMedia {

private static final long serialVersionUID = 1657456300412658003L; 
// Get a file service 
private static FileService fileService = FileServiceFactory.getFileService(); 

@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
@Persistent 
private String title; 

@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
@Persistent 
private String author; 

@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private Text description; 

@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private MediaType mediaType; 

@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private String fullPath; 

@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private String fileName; 
@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private long size; 
@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private String contentType; 
@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private boolean isDeactive; 
@Persistent 
private String chartId; 
@Transient 
private IChart chart; 
@Persistent 
private boolean approved; 

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Key key; 

@Persistent 
private Date imageDate; 
@Transient 
private BlobKey blobKey; 
@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private float imageLatitute = 190; 
@Persistent 
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true") 
private float imageLongitute = 190; 

...

回答

1

嘗試打開將Appstats。它使您能夠很好地瞭解您的I/O成本來自何處。

要考慮的另一件事是索引寫入。您擁有的索引屬性或複合索引條目越多,寫入實體的成本就越高。