Red de conocimiento informático - Problemas con los teléfonos móviles - Uso de secuencia en PostgreSQL

Uso de secuencia en PostgreSQL

Sequence es la eficiente herramienta de incremento de identificación de pg (también llamada secuencia). La secuencia utiliza bloqueos livianos para incrementar los identificadores de manera eficiente y, por lo tanto, es más rápida que los bloqueos de fila ACTUALIZAR. El tipo de datos de retorno de la secuencia tiene como valor predeterminado un entero de 64 bits, y la página 10 se puede personalizar como smallint, integer o bigint.

La función de la secuencia es garantizar que los datos incrementados automáticamente no se repitan, es decir, los datos después de cada incremento automático persistirán en este momento, para continuar mejorando el rendimiento. puede agregar el parámetro CACHE (el valor predeterminado es 1), cada proceso (conexión) puede almacenar en caché una subsecuencia en la memoria del proceso actual. Cuando la subsecuencia se agota, se obtendrá una nueva subsecuencia de la secuencia original.

Este es un ejemplo simple, usando CACHE 10 para crear la secuencia temp_seq3, la sesión A puede obtener el valor 1...10, la sesión B puede obtener el valor 1...10 y la sesión B puede obtenga el valor 1...10, la sesión B puede obtener los valores 11...20, y luego el orden de adquisición es .................. ........20, entonces la secuencia de adquisición puede ser (A, A, B, A) y el valor de retorno será (1, 2, 11, 3). Este no es un incremento automático estricto. secuencia, pero se puede garantizar que el valor de retorno sea único, excepto el parámetro CYCLE.

De acuerdo con la documentación y el código fuente (línea de enlace 80), el tamaño máximo almacenado en caché en la memoria es diferente para cada proceso, por lo que no puede usar CACHE para servicios que requieren un incremento automático estricto.

Aquí hay tres formas de usar pg para el incremento automático de ID.

Para probar este comando, abra una ventana acoplable en macOS y ejecute pg en ella. Utilice Docker en MacOS para ejecutar el script pgbench y reemplace el contenido de sql.sql con el script de prueba de esfuerzo correspondiente.

TPS: 986

TPS: 7332

TPS: 7451

Eche un vistazo al generador de ID distribuido de WeChat, su principio es básico Lo mismo, "en realidad, el tamaño del paso de cada promoción es 10000"="CACHE 10000". Enlace

La optimización anterior se ha aplicado al servicio de generación de números de pedido y números de cupones del sistema de comercio electrónico Yousuqi, brindando a los comerciantes servicios más rápidos y confiables.