|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.teiid.common.buffer.impl.BufferManagerImpl
public class BufferManagerImpl
Default implementation of BufferManager.
Responsible for creating/tracking TupleBuffers and providing access to the StorageManager. The buffering strategy attempts to purge batches from the least recently used TupleBuffer from before (which wraps around circularly) the last used batch. This attempts to compensate for our tendency to read buffers in a forward manner. If our processing algorithms are changed to use alternating ascending/descending access, then the buffering approach could be replaced with a simple LRU. TODO: allow for cached stores to use lru - (result set/mat view) TODO: account for row/content based sizing (difficult given value sharing) TODO: account for memory based lobs (it would be nice if the approximate buffer size matched at 100kB) TODO: add detection of pinned batches to prevent unnecessary purging of non-persistent batches - this is not necessary for already persistent batches, since we hold a weak reference
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.teiid.common.buffer.BufferManager |
---|
BufferManager.BufferReserveMode, BufferManager.TupleSourceType |
Field Summary |
---|
Fields inherited from interface org.teiid.common.buffer.BufferManager |
---|
DEFAULT_CONNECTOR_BATCH_SIZE, DEFAULT_MAX_PROCESSING_KB, DEFAULT_PROCESSOR_BATCH_SIZE, DEFAULT_RESERVE_BUFFER_KB |
Constructor Summary | |
---|---|
BufferManagerImpl()
|
Method Summary | |
---|---|
void |
addTupleBuffer(TupleBuffer tb)
|
FileStore |
createFileStore(java.lang.String name)
Creates a new FileStore . |
STree |
createSTree(java.util.List elements,
java.lang.String groupName,
int keyLength)
|
TupleBuffer |
createTupleBuffer(java.util.List elements,
java.lang.String groupName,
BufferManager.TupleSourceType tupleSourceType)
|
long |
getBatchesAdded()
|
int |
getConnectorBatchSize()
Get connector batch size |
int |
getMaxProcessingKB()
Return the maximum KB that can be temporarily held potentially across even a blocked exception. |
int |
getProcessorBatchSize()
Get processor batch size |
long |
getReadAttempts()
|
long |
getReadCount()
|
int |
getSchemaSize(java.util.List<? extends Expression> elements)
Get the size estimate in KB for the given schema. |
StorageManager |
getStorageManager()
|
TupleBuffer |
getTupleBuffer(java.lang.String id)
|
long |
getWriteCount()
|
void |
initialize()
|
void |
releaseBuffers(int count)
Releases the buffers reserved by a call to BufferManager#reserveBuffers(int, boolean) |
int |
reserveBuffers(int count,
BufferManager.BufferReserveMode mode)
Reserve up to count buffers for use. |
void |
setConnectorBatchSize(int connectorBatchSize)
|
void |
setMaxActivePlans(int maxActivePlans)
Set the maxActivePlans as a hint at determining the maxProcessingKB |
void |
setMaxProcessingKB(int maxProcessingKB)
|
void |
setMaxReserveKB(int maxReserveBatchKB)
|
void |
setProcessorBatchSize(int processorBatchSize)
|
void |
setStorageManager(StorageManager storageManager)
Add a storage manager to this buffer manager, order is unimportant |
void |
setUseWeakReferences(boolean useWeakReferences)
|
void |
shutdown()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BufferManagerImpl()
Method Detail |
---|
public long getBatchesAdded()
public long getReadCount()
public long getWriteCount()
public long getReadAttempts()
public int getMaxProcessingKB()
BufferManager
getMaxProcessingKB
in interface BufferManager
public int getProcessorBatchSize()
getProcessorBatchSize
in interface BufferManager
public int getConnectorBatchSize()
getConnectorBatchSize
in interface BufferManager
public void setConnectorBatchSize(int connectorBatchSize)
public void setProcessorBatchSize(int processorBatchSize)
public void setStorageManager(StorageManager storageManager)
storageManager
- Storage manager to addpublic StorageManager getStorageManager()
public TupleBuffer createTupleBuffer(java.util.List elements, java.lang.String groupName, BufferManager.TupleSourceType tupleSourceType)
createTupleBuffer
in interface BufferManager
public STree createSTree(java.util.List elements, java.lang.String groupName, int keyLength)
createSTree
in interface BufferManager
public FileStore createFileStore(java.lang.String name)
BufferManager
FileStore
. See FileStore.setCleanupReference(Object)
to
automatically cleanup the underlying resources.
createFileStore
in interface BufferManager
createFileStore
in interface StorageManager
public void setMaxActivePlans(int maxActivePlans)
BufferManager
setMaxActivePlans
in interface BufferManager
public void setMaxProcessingKB(int maxProcessingKB)
public void setMaxReserveKB(int maxReserveBatchKB)
public void initialize() throws TeiidComponentException
initialize
in interface StorageManager
TeiidComponentException
public void releaseBuffers(int count)
BufferManager
BufferManager#reserveBuffers(int, boolean)
releaseBuffers
in interface BufferManager
public int reserveBuffers(int count, BufferManager.BufferReserveMode mode)
BufferManager
reserveBuffers
in interface BufferManager
public int getSchemaSize(java.util.List<? extends Expression> elements)
BufferManager
getSchemaSize
in interface BufferManager
public void shutdown()
public void addTupleBuffer(TupleBuffer tb)
addTupleBuffer
in interface BufferManager
public TupleBuffer getTupleBuffer(java.lang.String id)
getTupleBuffer
in interface BufferManager
public void setUseWeakReferences(boolean useWeakReferences)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |