Need to a way to buffer writes.
Up to this point, all additions through a WFS transaction were written to the Data Store upon arrival. They were marked with an additional visibility using the transaction ID. On commit, the transaction ID is removed. This process is not optimal. The reason for the approach is easily support queries that occur during the transaction and to insure the memory foot-print within GeoServer is small. Buffering additions can lead to memory issues if the WFS transactions are extremely large.
To improve performance, the system maintains a buffer of additions.
The buffer is flushed to the store in three cases : (1) fixed size of buffer is exceeded, (2) reads are attempted mid-transaction (not a WFS-T supported use case) and (3) upon commit.
When commit occurs, the buffered additions are written without the transaction ID in a batch, more than doubling the performance.
Need to a way to buffer writes.
Up to this point, all additions through a WFS transaction were written to the Data Store upon arrival. They were marked with an additional visibility using the transaction ID. On commit, the transaction ID is removed. This process is not optimal. The reason for the approach is easily support queries that occur during the transaction and to insure the memory foot-print within GeoServer is small. Buffering additions can lead to memory issues if the WFS transactions are extremely large.
To improve performance, the system maintains a buffer of additions.
The buffer is flushed to the store in three cases : (1) fixed size of buffer is exceeded, (2) reads are attempted mid-transaction (not a WFS-T supported use case) and (3) upon commit.
When commit occurs, the buffered additions are written without the transaction ID in a batch, more than doubling the performance.