InglésFrancésEspañol

icono de página de OnWorks

pgbench: en línea en la nube

Ejecute pgbench en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando pgbench que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


pgbench: ejecute una prueba de referencia en PostgreSQL

SINOPSIS


banco de pgb -i [opción...] [nombre de la base de datos]

banco de pgb [opción...] [nombre de la base de datos]

DESCRIPCIÓN


pgbench es un programa simple para ejecutar pruebas comparativas en PostgreSQL. Funciona igual
secuencia de comandos SQL una y otra vez, posiblemente en múltiples sesiones de base de datos concurrentes,
y luego calcula la tasa de transacción promedio (transacciones por segundo). Por defecto,
pgbench prueba un escenario que se basa libremente en TPC-B, que involucra cinco SELECCIONAR, ACTUALIZAR,
INSERT comandos por transacción. Sin embargo, es fácil probar otros casos escribiendo
sus propios archivos de secuencia de comandos de transacciones.

La salida típica de pgbench se ve así:

tipo de transacción: TPC-B (más o menos)
factor de escala: 10
modo de consulta: simple
número de clientes: 10
número de hilos: 1
número de transacciones por cliente: 1000
número de transacciones realmente procesadas: 10000/10000
tps = 85.184871 (incluido el establecimiento de conexiones)
tps = 85.296346 (excluyendo el establecimiento de conexiones)

Las primeras seis líneas informan sobre algunos de los ajustes de parámetros más importantes. La siguiente linea
informa el número de transacciones completadas y previstas (la última es solo la
producto de número de clientes y número de transacciones por cliente); estos serán iguales
a menos que la ejecución haya fallado antes de completarse. (En -T modo, sólo el número real de
las transacciones se imprimen.) Las dos últimas líneas informan el número de transacciones por segundo,
calculado con y sin contar el tiempo para iniciar sesiones de base de datos.

La prueba de transacción tipo TPC-B predeterminada requiere que se configuren tablas específicas de antemano.
pgbench debe invocarse con el -i (inicializar) opción para crear y completar estos
mesas. (Cuando está probando un script personalizado, no necesita este paso, sino que lo hará
necesita hacer cualquier configuración que necesite su prueba.) La inicialización se ve así:

banco de datos -i [ otras opciones ] nombre de la base de datos

donde nombre de la base de datos es el nombre de la base de datos ya creada para realizar la prueba (es posible que también necesite
-h, -p, y/o -U opciones para especificar cómo conectarse al servidor de la base de datos).

Precaución
pgbench -i crea cuatro tablas pgbench_accounts, pgbench_branches, pgbench_history,
y pgbench_tellers, destruyendo cualquier tabla existente con estos nombres. Ten mucho cuidado con
¡use otra base de datos si tiene tablas con estos nombres!

En el "factor de escala" predeterminado de 1, las tablas inicialmente contienen esta cantidad de filas:

tabla # de filas
---------------------------------
pgbench_branches 1
pgbench_tellers 10
pgbench_cuentas 100000
pgbench_historia 0

Puede (y, para la mayoría de los propósitos, probablemente debería) aumentar el número de filas utilizando el
-s (factor de escala) opción. El -F La opción (factor de relleno) también podría usarse en este punto.

Una vez que haya realizado la configuración necesaria, puede ejecutar su punto de referencia con un comando que
no incluye -i, y

banco de pruebas [ opciones ] nombre de la base de datos

En casi todos los casos, necesitará algunas opciones para realizar una prueba útil. El más importante
las opciones son -c (número de clientes), -t (número de transacciones), -T (límite de tiempo), y -f
(especifique un archivo de script personalizado). Consulte a continuación para obtener una lista completa.

OPCIONES


Lo siguiente se divide en tres subsecciones: Se utilizan diferentes opciones durante
inicialización de la base de datos y mientras se ejecutan los puntos de referencia, algunas opciones son útiles tanto en
casos.

Inicialización Opciones
pgbench acepta los siguientes argumentos de inicialización de la línea de comandos:

-i
--inicializar
Requerido para invocar el modo de inicialización.

-F factor de llenado
--fillfactor =factor de llenado
Cree las tablas pgbench_accounts, pgbench_tellers y pgbench_branches con el
factor de relleno dado. El valor predeterminado es 100.

-n
- sin vacío
No realice la aspiración después de la inicialización.

-q
--tranquilo
Cambie el registro al modo silencioso, produciendo solo un mensaje de progreso cada 5 segundos. El
el registro predeterminado imprime un mensaje cada 100000 filas, que a menudo genera muchas líneas
por segundo (especialmente en buen hardware).

-s factor de escala
--escala =factor de escala
Multiplica el número de filas generadas por el factor de escala. Por ejemplo, -s 100 será
cree 10,000,000 filas en la tabla pgbench_accounts. El valor predeterminado es 1. Cuando la escala es
20,000 o más, las columnas utilizadas para contener identificadores de cuenta (columnas de ayuda)
cambiar a usar números enteros más grandes (bigint), para que sean lo suficientemente grandes como para mantener el rango
de identificadores de cuenta.

--llaves extranjeras
Cree restricciones de clave externa entre las tablas estándar.

--index-tablespace =index_tablespace
Cree índices en el espacio de tabla especificado, en lugar del espacio de tabla predeterminado.

--tablespace =espacio de tabla
Cree tablas en el espacio de tabla especificado, en lugar del espacio de tabla predeterminado.

- tablas-no registradas
Cree todas las tablas como tablas sin registrar, en lugar de tablas permanentes.

Evaluación comparativa Opciones
pgbench acepta los siguientes argumentos de evaluación comparativa de la línea de comandos:

-c clientes
--cliente =clientes
Número de clientes simulados, es decir, número de sesiones de base de datos simultáneas. Defecto
es 1.

-C
--conectar
Establezca una nueva conexión para cada transacción, en lugar de hacerlo solo una vez por
sesión de cliente. Esto es útil para medir la sobrecarga de la conexión.

-d
--depurar
Imprimir salida de depuración.

-D nombrevar=propuesta de
--define =nombrevar=propuesta de
Defina una variable para que la utilice un script personalizado (ver más abajo). Múltiple -D las opciones son
permitido.

-f nombre de archivo
--file =nombre de archivo
Leer el script de transacción de nombre de archivo. Consulte los detalles a continuación. -N, -Sy -f están
mutuamente excluyentes.

-j hilos
--jobs =hilos
Número de subprocesos de trabajo dentro de pgbench. El uso de más de un hilo puede resultar útil en
máquinas multi-CPU. El número de clientes debe ser un múltiplo del número de subprocesos,
ya que a cada hilo se le asigna el mismo número de sesiones de cliente para administrar. El valor predeterminado es 1.

-l
--Iniciar sesión
Escriba el tiempo que tarda cada transacción en un archivo de registro. Consulte los detalles a continuación.

-L límitar
--latency-limit =límitar
Transacción que dura más de límitar los milisegundos se cuentan e informan
por separado, como tarde.

Cuando se usa el estrangulamiento (--rate = ...), transacciones que se retrasan en el cronograma por más
than límitar ms, y por lo tanto no tienen ninguna esperanza de alcanzar el límite de latencia, no se envían al
servidor en absoluto. Se cuentan y se informan por separado como omitidos.

-M modo de consulta
--protocolo =modo de consulta
Protocolo a utilizar para enviar consultas al servidor:

· Simple: utilice un protocolo de consulta simple.

· Extendido: usa el protocolo de consulta extendido.

· Preparado: utilice un protocolo de consulta ampliado con declaraciones preparadas.

El predeterminado es el protocolo de consulta simple. (Consulte el Capítulo 50, Protocolo frontend / backend, en
la documentación para obtener más información).

-n
- sin vacío
No aspire antes de ejecutar la prueba. Esta opcion es necesario si usted es
ejecutar un escenario de prueba personalizado que no incluye las tablas estándar
pgbench_accounts, pgbench_branches, pgbench_history y pgbench_tellers.

-N
- saltar-algunas-actualizaciones
No actualice pgbench_tellers y pgbench_branches. Esto evitará la contención de actualizaciones
en estas tablas, pero hace que el caso de prueba sea aún menos parecido al TPC-B.

-P AMF
--progreso =AMF
Mostrar informe de progreso cada segundo segundos. El informe incluye el tiempo transcurrido desde la
inicio de la ejecución, los tps desde el último informe y la latencia de la transacción
desviación estándar y promedio desde el último informe. Bajo estrangulamiento-R), el
La latencia se calcula con respecto a la hora de inicio programada de la transacción, no a la
tiempo de inicio de la transacción real, por lo que también incluye el retraso de programación promedio
en las transacciones.

-r
--informe-latencias
Informe la latencia promedio por declaración (tiempo de ejecución desde la perspectiva del
cliente) de cada comando después de que finalice el punto de referencia. Consulte los detalles a continuación.

-R y
--rate =y
Ejecute transacciones con el objetivo de la tasa especificada en lugar de ejecutar tan rápido como
posible (el predeterminado). La tasa se expresa en transacciones por segundo. Si el objetivo
La tasa está por encima de la tasa máxima posible, el límite de tasa no afectará los resultados.

El objetivo de la tasa es el inicio de transacciones a lo largo de un programa distribuido por Poisson
línea de tiempo. La programación de la hora de inicio esperada avanza según el momento en que el cliente
comenzó por primera vez, no cuando terminó la transacción anterior. Ese enfoque significa que cuando
las transacciones pasan de su hora de finalización programada original, es posible que se realicen posteriores
para ponerse al día de nuevo.

Cuando la limitación está activa, la latencia de la transacción informada al final de la ejecución es
calcula a partir de las horas de inicio programadas, por lo que incluye la hora en que cada transacción
Tuvo que esperar a que finalizara la transacción anterior. El tiempo de espera se llama
el tiempo de retraso del programa, y ​​su promedio y máximo también se informan por separado. El
latencia de la transacción con respecto a la hora real de inicio de la transacción, es decir, la hora
gastado ejecutando la transacción en la base de datos, se puede calcular restando el
programar el tiempo de retraso de la latencia informada.

If - límite de latencia se usa junto con --índice, una transacción puede retrasarse tanto
que ya ha superado el límite de latencia cuando finaliza la transacción anterior, porque
la latencia se calcula a partir de la hora de inicio programada. Tales transacciones no son
enviados al servidor, pero se omiten por completo y se cuentan por separado.

Un tiempo de retraso de programación alto es una indicación de que el sistema no puede procesar transacciones
a la tasa especificada, con el número elegido de clientes e hilos. Cuando el promedio
El tiempo de ejecución de la transacción es más largo que el intervalo programado entre cada
transacción, cada transacción sucesiva se retrasará más y el cronograma
El tiempo de retraso seguirá aumentando cuanto más larga sea la prueba. Cuando eso suceda, lo harás
tiene que reducir la tasa de transacción especificada.

-s factor de escala
--escala =factor de escala
Informe el factor de escala especificado en la salida de pgbench. Con las pruebas integradas, este
no es necesario; el factor de escala correcto se detectará contando el número de
filas en la tabla pgbench_branches. Sin embargo, al probar comparativas personalizadas (-f
opción), el factor de escala se informará como 1 a menos que se utilice esta opción.

-S
- solo seleccionar
Realice transacciones de solo selección en lugar de una prueba similar a TPC-B.

-t transacciones
--transacciones =transacciones
Número de transacciones que ejecuta cada cliente. El valor predeterminado es 10.

-T segundos
--time =segundos
Ejecute la prueba durante estos segundos, en lugar de un número fijo de transacciones por
cliente. -t -T son mutuamente excluyentes.

-v
--vacío-todo
Aspire las cuatro mesas estándar antes de ejecutar la prueba. Con ninguno -n ni -v,
pgbench aspirará las tablas pgbench_tellers y pgbench_branches, y truncará
pgbench_historia.

--aggregate-interval =segundos
Duración del intervalo de agregación (en segundos). Puede usarse solo junto con -l - con
esta opción, el registro contiene un resumen por intervalo (número de transacciones, mín. / máx.
latencia y dos campos adicionales útiles para la estimación de la varianza).

Actualmente, esta opción no es compatible con Windows.

--sampling-rate =y
Tasa de muestreo, utilizada al escribir datos en el registro, para reducir la cantidad de registro
generado. Si se da esta opción, solo la fracción especificada de transacciones se
registrado. 1.0 significa que se registrarán todas las transacciones, 0.05 significa que solo el 5% del
las transacciones se registrarán.

Recuerde tener en cuenta la frecuencia de muestreo al procesar el archivo de registro. Para
Por ejemplo, al calcular los valores de tps, debe multiplicar los números en consecuencia (p. ej.
con una frecuencia de muestreo de 0.01, solo obtendrá 1/100 de los tps reales).

Algunos Opciones
pgbench acepta los siguientes argumentos comunes de la línea de comandos:

-h hostname
--host =hostname
El nombre de host del servidor de la base de datos

-p Puerto
--port =Puerto
El número de puerto del servidor de la base de datos.

-U Inicie sesión
--username =Inicie sesión
El nombre de usuario para conectarse como

-V
--versión
Imprima la versión de pgbench y salga.

-?
--ayuda
Muestre ayuda sobre los argumentos de la línea de comandos de pgbench y salga.

NOTAS


Los is de la forma más "Transacción" Actualmente realizado in ¿banco de pg?
El script de transacción predeterminado emite siete comandos por transacción:

1. COMIENZO;

2. ACTUALIZAR pgbench_accounts SET abalance = abalance +: delta WHERE aid =: aid;

3. SELECCIONE abalance FROM pgbench_accounts DONDE aid =: aid;

4. ACTUALIZAR pgbench_tellers SET tbalance = tbalance +: delta DONDE tid =: tid;

5. ACTUALIZAR pgbench_branches SET bbalance = bbalance +: delta DONDE bid =: bid;

6. INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (: tid,: bid,: aid,
: delta, CURRENT_TIMESTAMP);

7. FIN;

Si especifica -N, los pasos 4 y 5 no están incluidos en la transacción. Si especifica -S,
sólo el SELECCIONAR se emite.

Personalizado Scripts
pgbench tiene soporte para ejecutar escenarios de referencia personalizados reemplazando el predeterminado
script de transacción (descrito arriba) con un script de transacción leído de un archivo (-f
opción). En este caso, una "transacción" cuenta como una ejecución de un archivo de secuencia de comandos. Usted puede
incluso especificar varios scripts (varios -f opciones), en cuyo caso una aleatoria de las
Los scripts se eligen cada vez que la sesión de un cliente inicia una nueva transacción.

El formato de un archivo de secuencia de comandos es un comando SQL por línea; Los comandos SQL multilínea no son
soportado. Las líneas vacías y las que comienzan con - se ignoran. Las lneas del archivo de script tambin pueden
ser "meta comandos", que son interpretados por el propio pgbench, como se describe a continuación.

Existe una sencilla función de sustitución de variables para los archivos de script. Las variables se pueden establecer mediante
la línea de comandos -D opción, explicada anteriormente, o por los meta comandos explicados a continuación. En
además de cualquier variable preestablecida por -D opciones de la línea de comandos, hay algunas variables
que se preajustan automáticamente, enumerados en la Tabla 221, “Variables automáticas”. Un valor
especificado para estas variables usando -D tiene prioridad sobre los preajustes automáticos. Una vez
establecido, el valor de una variable se puede insertar en un comando SQL escribiendo:nombre de la variable. Cuando el
ejecutando más de una sesión de cliente, cada sesión tiene su propio conjunto de variables.

Mesa 221. Automático las variables
┌──────────┬──────────────────────────────
VariableDescripción

│escala │ factor de escala actual │

│client_id │ número único que identifica el │
│ │ sesión de cliente (comienza desde │
│ │ cero) │
└──────────┴───────────────────────── ────

Los meta comandos del archivo de script comienzan con una barra invertida (\). Los argumentos de un metacomando son
separados por espacios en blanco. Estos metacomandos son compatibles:

\colocar nombrevar expresión
Establece variable nombrevar a un valor entero calculado a partir de expresión. La expresion
puede contener constantes enteras como 5432, referencias a variables:nombre de la variabley
Expresiones compuestas por operadores unarios (-) o binarios (+, -, *, /,%) con su habitual
asociatividad y paréntesis.

Ejemplos:

\ set ntellers 10 *: escala
\ set aid (1021 *: aid)% (100000 *: escala) + 1

\ setrandom nombrevar min max [uniforme | {gaussiano | exponencial} parámetro ]
Establece variable nombrevar a un valor entero aleatorio entre los límites min max
inclusivo. Cada límite puede ser una constante entera o un:nombre de la variable referencia
a una variable que tiene un valor entero.

De forma predeterminada, o cuando se especifica uniforme, todos los valores del rango se dibujan con igual
probabilidad. La especificación de opciones gaussianas o exponenciales modifica este comportamiento; cada
requiere un parámetro obligatorio que determina la forma precisa de la distribución.

Para una distribución gaussiana, el intervalo se asigna a una normal estándar
distribución (la clásica curva de Gauss en forma de campana) truncada en -parámetro en el
izquierda y parámetro + a la derecha. Los valores en el medio del intervalo son más probables
estar atraido. Para ser precisos, si PHI (x) es la función de distribución acumulativa de la
distribución normal estándar, con mu media definida como (max + min) / 2.0, con

f (x) = PHI (2.0 * parámetro * (x - mu) / (max - min + 1)) /
(2.0 * PHI (parámetro) - 1.0)

entonces valora i entre min max inclusive se dibuja con probabilidad: f (i + 0.5) - f (i
- 0.5). Intuitivamente, el mayor parámetro, los valores más frecuentemente cercanos al
la mitad del intervalo se dibujan, y los valores menos frecuentes cercanos al min
max límites. Aproximadamente el 67% de los valores se extraen del medio 1.0 / parámetro, que es un
relativo 0.5 / parámetro alrededor de la media, y 95% en el medio 2.0 / parámetro, que
es un parámetro relativo de 1.0 / alrededor de la media; por ejemplo, si parámetro es 4.0, 67%
de los valores se extraen del cuarto medio (1.0 / 4.0) del intervalo (es decir, de 3.0
/ 8.0 a 5.0 / 8.0) y 95% desde la mitad media (2.0 / 4.0) del intervalo (segundo
y tercer cuartil). El mínimo parámetro es 2.0 para el rendimiento del Box-Muller
transformar.

Para una distribución exponencial, parámetro controla la distribución truncando un
distribución exponencial rápidamente decreciente en parámetro, y luego proyectar sobre
enteros entre los límites. Para ser precisos, con

f (x) = exp (-parámetro * (x - min) / (max - min + 1)) / (1.0 - exp (-parámetro))

Entonces valora i entre min max inclusive se dibuja con probabilidad: f (x) - f (x + 1).
Intuitivamente, el mayor parámetro, los valores más frecuentemente cercanos a min están
accedido, y los valores con menos frecuencia cercanos a max se accede. Cuanto más cerca de 0
parámetro, más plana (más uniforme) es la distribución del acceso. Una aproximación burda
de la distribución es que los valores del 1% más frecuentes en el rango, cercanos a min,
se dibujan parámetro% del tiempo. parámetro El valor debe ser estrictamente positivo.

Ejemplo:

\ setrandom aid 1: nacuenta gaussiano 5.0

\dormir número [nosotros | ms | s ]
Hace que la ejecución del script se suspenda durante la duración especificada en microsegundos (EE. UU.),
milisegundos (ms) o segundos (s). Si se omite la unidad, los segundos son los predeterminados.
número puede ser una constante entera o un:nombre de la variable referencia a una variable
que tiene un valor entero.

Ejemplo:

\ dormir 10 ms

\ setshell nombrevar comando [ argumento ...]
Establece variable nombrevar al resultado del comando de shell comando. El comando debe
devuelve un valor entero a través de su salida estándar.

argumento puede ser una constante de texto o un:nombre de la variable referencia a una variable de
cualquier tipo. Si quieres usar argumento comenzando con dos puntos, debe agregar un
dos puntos adicionales al comienzo de argumento.

Ejemplo:

\ setshell variable_to_be_assigned comando argumento_ literal: variable :: inicio_ literal_con_colon

\cáscara comando [ argumento ...]
Igual que \ setshell, pero el resultado se ignora.

Ejemplo:

\ shell comando argumento_ literal: variable :: inicio_ literal_con_colon

Como ejemplo, la definición completa de la transacción tipo TPC-B incorporada es:

\ set nbranches: escala
\ set ntellers 10 *: escala
\ set naccounts 100000 *: escala
\ setrandom aid 1: naccounts
\ oferta aleatoria 1: n ramas
\ setrandom tid 1: ntellers
\ setrandom delta -5000 5000
EMPEZAR;
ACTUALIZAR pgbench_accounts SET abalance = abalance +: delta WHERE aid =: aid;
SELECCIONE abalance FROM pgbench_accounts DONDE aid =: aid;
ACTUALIZAR pgbench_tellers SET tbalance = tbalance +: delta DONDE tid =: tid;
ACTUALIZAR pgbench_branches SET bbalance = bbalance +: delta DONDE bid =: bid;
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (: tid,: bid,: aid,: delta, CURRENT_TIMESTAMP);
FIN;

Este script permite que cada iteración de la transacción haga referencia a diferentes
filas elegidas al azar. (Este ejemplo también muestra por qué es importante para cada sesión de cliente
tener sus propias variables; de lo contrario, no tocarían de forma independiente diferentes
filas.)

Por transacción Inicio de sesión
Con la -l opción pero sin la - intervalo-agregado, pgbench escribe el tiempo que tarda
cada transacción a un archivo de registro. El archivo de registro se llamará pgbench_log.nnn, donde el nnn is
el PID del proceso pgbench. Si el -j La opción es 2 o superior, lo que crea varios trabajadores.
subprocesos, cada uno tendrá su propio archivo de registro. El primer trabajador usará el mismo nombre para su
archivo de registro como en el caso estándar de un solo trabajador. Los archivos de registro adicionales para el otro
los trabajadores se llamarán pgbench_log.nnn.mmm, donde el mmm es un número secuencial para cada
trabajador comenzando con 1.

El formato del registro es:

client_id transaccion_no time archivo_no tiempo_época tiempo_nosotros [horario_lag]

donde time es el tiempo total de transacción transcurrido en microsegundos, archivo_no identifica cual
Se utilizó un archivo de script (útil cuando se especificaron varios scripts con -f), o
tiempo_época/tiempo_nosotros son una marca de tiempo en formato de época Unix y un desplazamiento en microsegundos
(adecuado para crear una marca de tiempo ISO 8601 con fracciones de segundo) que muestra cuándo
transacción completada. Campo horario_lag es la diferencia entre la transacción
hora de inicio programada y la hora a la que realmente comenzó, en microsegundos. Es solo
presente cuando el --índice se utiliza la opción. El ultimo campo transacciones_omitidas informa el
número de transacciones omitidas porque estaban demasiado retrasadas. Es solo
presente cuando ambas opciones --índice - límite de latencia son usados.

Aquí hay un fragmento del archivo de registro generado:

0 199 2241 0 1175850568 995598
0 200 2465 0 1175850568 998079
0 201 2513 0 1175850569 608
0 202 2038 0 1175850569 2663

Otro ejemplo con --rate = 100 y --latency-limit = 5 (observe el adicional horario_lag
columna):

0 81 4621 0 1412881037 912698 3005
0 82 6173 0 1412881037 914578 4304
0 83 omitido 0 1412881037 914578 5217
0 83 omitido 0 1412881037 914578 5099
0 83 4722 0 1412881037 916203 3108
0 84 4142 0 1412881037 918023 2333
0 85 2465 0 1412881037 919759 740

En este ejemplo, la transacción 82 se retrasó porque su latencia (6.173 ms) superó los 5
límite de ms. Se omitieron las siguientes dos transacciones, porque ya estaban atrasadas antes
incluso se iniciaron.

Al ejecutar una prueba larga en hardware que puede manejar muchas transacciones, los archivos de registro
puede volverse muy grande. El --tasa de muestreo La opción se puede usar para registrar solo una muestra aleatoria
de transacciones.

Agregado Inicio de sesión
Con la - intervalo-agregado opción, los registros usan un formato un poco diferente:

intervalo_inicio núm_de_transacciones suma_latencia latencia_2_sum latencia_min latencia_máxima [suma_retraso retraso_2_suma min_lag max_lag [transacciones_omitidas]]

donde intervalo_inicio es el inicio del intervalo (marca de tiempo del formato de época de Unix),
núm_de_transacciones es el número de transacciones dentro del intervalo, suma_latencia es un
suma de latencias (para que pueda calcular la latencia promedio fácilmente). Los siguientes dos campos son
útil para la estimación de la varianza - suma_latencia es una suma de latencias y latencia_2_sum es un
suma de los segundos poderes de latencias. Los dos últimos campos son latencia_min - una latencia mínima
dentro del intervalo, y latencia_máxima - latencia máxima dentro del intervalo. Una transacción
se cuenta en el intervalo en el que se cometió. Los campos al final suma_retraso,
retraso_2_suma, min_lagy max_lag, solo están presentes si el --índice se utiliza la opción. El muy
el último, transacciones_omitidas, solo está presente si la opción - límite de latencia está presente,
también. Se calculan a partir del tiempo que tuvo que esperar cada transacción a la anterior.
para finalizar, es decir, la diferencia entre la hora de inicio programada de cada transacción y la
hora en que realmente comenzó.

Aquí hay salidas de ejemplo:

1345828501 5601 1542744 483552416 61 2573
1345828503 7884 1979812 565806736 60 1479
1345828505 7208 1979422 567277552 59 1391
1345828507 7685 1980268 569784714 60 1398
1345828509 7073 1979779 573489941 236 1411

Tenga en cuenta que, si bien el archivo de registro simple (no agregado) contiene el índice de la secuencia de comandos personalizada
archivos, el registro agregado no lo hace. Por lo tanto, si necesita datos por script, debe
agregue los datos por su cuenta.

Por estado de cuenta Latencias
Con la -r opción, pgbench recopila el tiempo de transacción transcurrido de cada estado de cuenta
ejecutado por cada cliente. Luego informa un promedio de esos valores, denominado
latencia para cada declaración, una vez finalizada la evaluación comparativa.

Para el script predeterminado, la salida se verá similar a esta:

inicio de vacío ... fin.
tipo de transacción: TPC-B (más o menos)
factor de escala: 1
modo de consulta: simple
número de clientes: 10
número de hilos: 1
número de transacciones por cliente: 1000
número de transacciones realmente procesadas: 10000/10000
tps = 618.764555 (incluido el establecimiento de conexiones)
tps = 622.977698 (excluyendo el establecimiento de conexiones)
latencias de declaración en milisegundos:
0.004386 \ set nbranches 1 *: escala
0.001343 \ set ntellers 10 *: escala
0.001212 \ set naccounts 100000 *: escala
0.001310 \ setrandom aid 1: naccounts
0.001073 \ oferta aleatoria 1: n ramas
0.001005 \ setrandom tid 1: ntellers
0.001078 \ setrandom delta -5000 5000
0.326152 COMENZAR;
0.603376 ACTUALIZAR pgbench_accounts SET abalance = abalance +: delta WHERE aid =: aid;
0.454643 SELECCIONE abalance FROM pgbench_accounts DONDE aid =: aid;
5.528491 ACTUALIZAR pgbench_tellers SET tbalance = tbalance +: delta WHERE tid =: tid;
7.335435 ACTUALIZAR pgbench_branches SET bbalance = bbalance +: delta WHERE bid =: bid;
0.371851 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (: tid,: bid,: aid,: delta, CURRENT_TIMESTAMP);
1.212976 FIN;

Si se especifican varios archivos de script, los promedios se informan por separado para cada
archivo de comandos.

Tenga en cuenta que recopilar la información de tiempo adicional necesaria para la latencia por declaración
el cálculo agrega algunos gastos generales. Esto ralentizará la velocidad de ejecución media y reducirá la
TPS calculado. La cantidad de desaceleración varía significativamente según la plataforma y
hardware. Comparar los valores promedio de TPS con y sin informes de latencia habilitados es una
buena forma de medir si la sobrecarga de tiempo es significativa.

Buena Prácticas
Es muy fácil usar pgbench para producir números completamente sin sentido. Aquí están algunas
directrices que le ayudarán a obtener resultados útiles.

En primer lugar, nunca cree en cualquier prueba que se ejecute durante solo unos segundos. Utilizar el -t or
-T opción para hacer que la ejecución dure al menos unos minutos, a fin de promediar el ruido. En algunos
En los casos, podría necesitar horas para obtener números que sean reproducibles. Es una buena idea intentar
Ejecute la prueba varias veces para averiguar si sus números son reproducibles o no.

Para el escenario de prueba de tipo TPC-B predeterminado, el factor de escala de inicialización (-s) debiera ser
al menos tan grande como la mayor cantidad de clientes que desea probar (-c); si no lo harás
principalmente medir la contención de actualización. Solo hay -s filas en pgbench_branches
tabla, y cada transacción quiere actualizar uno de ellos, por lo que -c valores en exceso de -s
indudablemente resultará en muchas transacciones bloqueadas a la espera de otras transacciones.

El escenario de prueba predeterminado también es bastante sensible a cuánto tiempo ha pasado desde que las tablas
se inicializaron: la acumulación de filas muertas y espacio muerto en las tablas cambia el
resultados. Para comprender los resultados, debe realizar un seguimiento del número total de actualizaciones y
cuando pasa la aspiradora. Si el autovacío está habilitado, puede resultar en cambios impredecibles en
desempeño medido.

Una limitación de pgbench es que puede convertirse en el cuello de botella al intentar probar un
gran número de sesiones de clientes. Esto se puede aliviar ejecutando pgbench en un diferente
máquina desde el servidor de la base de datos, aunque será esencial una baja latencia de red. Que podría
incluso será útil para ejecutar varias instancias de pgbench al mismo tiempo, en varias máquinas cliente,
contra el mismo servidor de base de datos.

Use pgbench en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

  • 1
    Atom
    Atom
    Atom es un editor de texto que
    moderno, accesible y con todas las funciones.
    También es fácilmente personalizable: usted
    puede personalizarlo para hacer cualquier cosa y ser
    capaz de ...
    Descarga Atom
  • 2
    ¡Osu!
    ¡Osu!
    ¡Osu! es un juego de ritmo simple con un pozo
    curva de aprendizaje pensada para los jugadores
    de todos los niveles de habilidad. uno de los grandes
    aspectos de Osu! es que es
    comunidad-dr...
    ¡Descarga Osu!
  • 3
    LIBPNG: biblioteca de referencia PNG
    LIBPNG: biblioteca de referencia PNG
    Biblioteca de referencia para apoyar la
    Formato de gráficos de red portátiles (PNG).
    Público: Desarrolladores. Programación
    Idioma: C. Esta es una aplicación que
    puede también...
    Descargar LIBPNG: biblioteca de referencia PNG
  • 4
    Detector de metales basado en RP2040
    Detector de metales basado en RP2040
    Basado en la placa Raspberry Pi Pico, este
    El detector de metales está incluido en el pulso.
    categoría de detectores de metales por inducción, con
    ventajas y desventajas bien conocidas.
    RP ...
    Descargar Detector de metales basado en RP2040
  • 5
    Gerente PAC
    Gerente PAC
    PAC es un reemplazo de Perl/GTK para
    SecureCRT/Putty/etc (Linux
    ssh/telnet/... gui)... Proporciona una GUI
    para configurar conexiones: usuarios,
    contraseñas, ESPERA regular...
    Descargar Administrador de PAC
  • 6
    geoservidor
    geoservidor
    GeoServer es un software de código abierto
    servidor escrito en Java que permite a los usuarios
    para compartir y editar datos geoespaciales.
    Diseñado para la interoperabilidad,
    publica da ...
    Descargar GeoServer
  • Más "

Comandos de Linux

Ad