Cómo Postgresql crea una instantánea
2 En el cuadro de diálogo de propiedades del cliente, primero elimine la operación de restauración. "Marca de verificación" en la parte inferior del sistema y luego haga clic en "Avanzado" para abrir el cuadro de diálogo de propiedades del cliente. En la configuración del disco del sistema, seleccione la ubicación de almacenamiento de caché como el lado del servidor.
2. Haga clic en "Avanzado" para abrir el cuadro de diálogo de configuración avanzada del cliente, seleccione el servidor como ubicación de almacenamiento de caché en la configuración del disco del sistema y no realice ningún cambio en ningún otro lugar.
3. Reinicie el cliente y comience a instalar el software. Durante el proceso de instalación, encontrará que el valor de la caché en la columna de tamaño de la caché de la máquina continúa aumentando hasta que se instala el software. (Reinicie y ejecute el software nuevamente para determinar si se está ejecutando normalmente)
4. Cierre el cliente y, cuando el estado del cliente en el servidor muestre que el cliente no se está ejecutando, haga clic en "Administración de imágenes". en el lado del servidor
5. Seleccione Espejo en el menú Espejo y haga clic en el botón "Espejo". Seleccione la imagen utilizada por el cliente en el menú de imágenes y luego haga clic en el botón "Administración de instantáneas". Botón "Gestión de instantáneas".
6. Seleccione el nodo de instantánea utilizado por el cliente y haga clic en "Generar instantánea".
7. Seleccione el cliente que realizó la instantánea en la opción del archivo de caché, y la opción será. Se completará automáticamente la siguiente ruta de caché, luego ingrese el nombre de la instantánea y la información de descripción de la instantánea en la sección "Información de la instantánea", y luego haga clic en el botón "Aceptar". Después de hacer clic en el botón "Aceptar", la instantánea estará lista.
8 Haga clic derecho en todos los clientes para abrir el cuadro de diálogo de propiedades del cliente. En "Configuración del menú de inicio", empuje la imagen del nodo de instantánea recién creado para la columna de inicio hacia la parte superior y haga clic en "Seguro". .
PostGreSQL utiliza el método "instantánea" para implementar MVCC, lo que significa específicamente que cada consulta en una transacción solo puede ver:
1. cambios realizados.
2. Cambios realizados por la consulta anterior a esta consulta en la transacción actual.
PostGreSQL obtendrá una instantánea de la base de datos actual al comienzo de cada transacción. La estructura de datos en la instantánea es la siguiente:
typedef struct SnapshotData
. {
SnapshotSatisfiesFunc satisface.
TransactionId xmin; /* Todos los cambios de transacciones con id menor que xmin visibles en la instantánea actual*/
TransactionId xmax /* Todos los cambios de transacciones con id mayor que xmax visibles en la instantánea actual*/
uint32 xcnt /* Recuento de transacciones en ejecución*/
TransactionId *xip /* Lista de ID de todas las transacciones en ejecución*/
/ * Nota: Todos los identificadores en xip[] satisfacen xmin lt; = xip[i] lt; xmax */
int32 subxcnt /* El número de identificadores de xact en subxip[], si se desborda; -1 */
TransactionId *subxip; /* Matriz de ID de subxact en curso */
CommandId curcid; /* En mi xact, CID lt es visible */ p>
uint32 active_count; /* refcount en la pila ActiveSnapshot */
uint32 regd_count; /* refcount en RegisteredSnapshotList */
bool copiado; instantánea, es falsa */
}En PostGreSQL, cada versión de datos tiene dos ID, uno de los cuales es CreationID, que es el ID de transacción para insertar datos, y el otro es ExpiredID, es decir, el ID de transacción de eliminación o actualización de datos. CreationIDlt; ID de transacción actual
2.ExpiredIDgt; el ID de transacción actual o ExpiredID no existe
El proceso de formación de una instantánea de inicio de transacción:
Recorre todo actualmente transacciones activas, registre esto en la matriz de ID de transacción activa según la secuencia de la transacción, seleccione la ID de transacción más pequeña actualmente visible para la transacción;
Seleccione el ID de transacción visible más pequeño de la transacción (registrado en xmin) y seleccione el ID de transacción visible más grande (registrado en xmax).
La opción de la versión final en PostGreSQL 8.5 es tener una función de prueba (HeapTupleSatisfiesMVCC y una serie de otras funciones) que verifica todos los datos de la página con la transacción actual después de obtener los datos de una página desde un sitio externo. Visibilidad, si no es visible, elimine los datos y finalmente devuelva todos los datos visibles. Finalmente devuelve todos los datos visibles.