Thread: Does CLUSTER generate WAL data?
I know the CLUSTER command essentially creates a new table, copies the data in INDEX order, then deletes the original table.
Does that mean all of the data passes through the WAL logs, or is it purely an internal operation? More specifically, if we're doing streaming replication, will all of the data for the table being clustered be transmitted across the network to the hot-standby slave?
Thanks,
Craig
I know the CLUSTER command essentially creates a new table, copies the data in INDEX order, then deletes the original table.Does that mean all of the data passes through the WAL logs, or is it purely an internal operation? More specifically, if we're doing streaming replication, will all of the data for the table being clustered be transmitted across the network to the hot-standby slave?
Not looking at the code but, yes, the replica must be an exact physical duplicate of the master and since the only ongoing source of data for the replica is the WAL the actions taken as part of performing a CLUSTER must be logged.
David J.
On Wed, Aug 24, 2016 at 4:49 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
I know the CLUSTER command essentially creates a new table, copies the data in INDEX order, then deletes the original table.Does that mean all of the data passes through the WAL logs, or is it purely an internal operation? More specifically, if we're doing streaming replication, will all of the data for the table being clustered be transmitted across the network to the hot-standby slave?Not looking at the code but, yes, the replica must be an exact physical duplicate of the master and since the only ongoing source of data for the replica is the WAL the actions taken as part of performing a CLUSTER must be logged.
Right, I understand that the WAL has to record the operation. But I'm not sure that answers the question. If the contents of the WAL are, "copy this table to that table in index order", then no data from the table itself will be in the WAL. On the other hand, if the contents of the WAL are "create a new table, and then insert all of this data", then the WAL records will be huge.
Which is it?
Thanks,
Craig
David J.
------------------------------ ---
Craig A. James
Chief Technology OfficerCraig A. James
On Aug 24, 2016, at 6:09 PM, Craig James <cjames@emolecules.com> wrote: > > Right, I understand that the WAL has to record the operation. But I'm not sure that answers the question. If the contentsof the WAL are, "copy this table to that table in index order", then no data from the table itself will be in theWAL. On the other hand, if the contents of the WAL are "create a new table, and then insert all of this data", then theWAL records will be huge. > > Which is it? WAL records changes at the page level, not commands; so it will be the one you don't want. -- Scott Ribe scott_ribe@elevated-dev.com http://www.elevated-dev.com/ https://www.linkedin.com/in/scottribe/ (303) 722-0567 voice
El mié, 24-08-2016 a las 16:06 -0700, Craig James escribió:
I know the CLUSTER command essentially creates a new table, copies the data in INDEX order, then deletes the original table.Does that mean all of the data passes through the WAL logs, or is it purely an internal operation? More specifically, if we're doing streaming replication, will all of the data for the table being clustered be transmitted across the network to the hot-standby slave?
Yes for sure.
Thanks,Craig