[ https://issues.apache.org/jira/browse/PHOENIX-3148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thomas D'Silva updated PHOENIX-3148: ------------------------------------ Attachment: comparison.png PHOENIX-3148-v3.patch [~jamestaylor] I have attached a v3 patch with a "phoenix.serialized.ptable.enabled" option that is off by default. The median time taken to write 1K rows with and without serialization while creating the 100K views is 9201ms and x ms. The time taken to write 1K rows after all the views created are 8902 ms and y ms respectively. I have also attached a chart showing the comparison. I am changing the PTable protobuf serialization to serialize/deserialize the view statement if it is present in the PTable. I think this should not break backward compatibility right? {code} public class PTableImpl implements PTable { @@ -1073,9 +1072,9 @@ public class PTableImpl implements PTable { List<PName> physicalNames = Collections.emptyList(); if (tableType == PTableType.VIEW) { viewType = ViewType.fromSerializedValue(table.getViewType().toByteArray()[0]); - if(table.hasViewStatement()){ - viewStatement = (String) PVarchar.INSTANCE.toObject(table.getViewStatement().toByteArray()); - } + } + if(table.hasViewStatement()){ + viewStatement = (String) PVarchar.INSTANCE.toObject(table.getViewStatement().toByteArray()); } if (tableType == PTableType.VIEW || viewIndexId != null) { physicalNames = Lists.newArrayListWithExpectedSize(table.getPhysicalNamesCount()); @@ -1181,6 +1180,8 @@ public class PTableImpl implements PTable { builder.setTransactional(table.isTransactional()); if(table.getType() == PTableType.VIEW){ builder.setViewType(ByteStringer.wrap(new byte[]{table.getViewType().getSerializedValue()})); + } + if(table.getViewStatement()!=null){ builder.setViewStatement(ByteStringer.wrap(PVarchar.INSTANCE.toBytes(table.getViewStatement()))); } if(table.getType() == PTableType.VIEW || table.getViewIndexId() != null){ @@ -1244,4 +1245,24 @@ public class PTableImpl implements PTable { public boolean isAppendOnlySchema() { return isAppendOnlySchema; } {code} !comparison.png > Reduce size of PTable so that more tables can be cached in the metada cache. > ---------------------------------------------------------------------------- > > Key: PHOENIX-3148 > URL: https://issues.apache.org/jira/browse/PHOENIX-3148 > Project: Phoenix > Issue Type: Bug > Reporter: Thomas D'Silva > Assignee: Thomas D'Silva > Labels: argus > Fix For: 4.8.1 > > Attachments: PHOENIX-3148-v2.patch, PHOENIX-3148-v3.patch, > PHOENIX-3148.patch, comparison.png > > > According to PHOENIX-2995, the current size is 7KB per PTable which works out > to enabling 140K PTables per 1GB. -- This message was sent by Atlassian JIRA (v6.3.4#6332)