Incluso se me ocurre que crees la primera página fuera antes de entrar en la parte donde defines que sea "unbreakable", algo tal que así:

pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Portada", ln=1, align="C")
pdf.add_page()
pdf.set_font("Times", size=16)
line_height = pdf.font_size * 2
col_width = pdf.epw / 4  # distribute content evenly
with pLib.pdf.unbreakable() as doc: 

Buenas @Lluís Vilalta , quizás este no sea el foro más adecuado al ser una pregunta puramente de Python, pero a ver si te podemos ayudar.

Veo por la documentación de dicha librería que puedes activar o desactivar la función de salto de página si el texto supera el espacio libre:

https://pyfpdf.readthedocs.io/en/latest/reference/set_auto_page_break/
 

Quizás puedas definir ese parámetro a falso cuando estás escribiendo la primera página y una vez acabado volver a definirlo a verdadero.

Nos indicaba @Enrico Parisi en su comentario:

Otra opción para ver/monitorear las transacciones abiertas directamente desde el Portal de administración del sistema es usar el Panel del sistema (Operación del sistema -> Panel del sistema). No es necesario escribir código ni SQL, solo unos pocos clics.
En el Panel del sistema hay una línea "Transacciones":

En caso de que una o más transacciones se abran durante más de 20 minutos (más o menos...), el Panel del sistema muestra un estado Problema.

En el Panel del sistema, si hace clic en la etiqueta "Transacciones" (independientemente del estado de Problema), en la parte inferior de la página se muestra un enlace "Haga clic aquí para obtener más detalles":

Si/cuando se hace clic en "Haga clic aquí para obtener más detalles", se muestra una página con las 5 transacciones principales (más tiempo): 

Desde allí, puede hacer clic en el ID del proceso e ir directamente a la página Detalles del proceso.

He creado una nueva rama en el proyecto de GitHub para incluir la prueba de Oracle. No lo voy a incluir en la rama de main porque requiere ampliar la memoria asignada a docker porque Oracle consume recursos como una mala bestia... Pero los que queráis probarla aquí tenéis la rama:

https://github.com/intersystems-ib/workshop-py-performance/tree/oracle

Aquí podéis ver la gráfica comparativa incluyendo a Oracle

Como podéis ver tanto Oracle como IRIS son equivalentes en términos de rendimiento.