El sábado 18 de junio de 2005 tuvo lugar en Madrid una multitudinaria manifestación auspiciada por el Foro de la Familia y apoyada por el Partido Popular, entonces presidido por Mariano Rajoy. Se organizó una gran marcha en contra del matrimonio igualitario en vísperas de la aprobación de la ley que lo iba instituir, promovida por el gobierno del PSOE que presidía José Luis Rodríguez Zapatero. La ley salió adelante en el Congreso de los Diputados el 30 de junio cuando se levantó el veto del Senado.
ICE y la Patrulla Fronteriza de EE. UU. deben llevar ahora cámaras corporales durante la “Operación Blitz Midway”, actualmente en progreso en la ciudad, días después de que se les ordenara dejar de disparar balas de goma, gases lacrimógenos y otras municiones químicas contra manifestantes y periodistas que protestaban contra la agenda de deportaciones masivas del presidente.
En lugar de reconocer que Estados Unidos corre el riesgo de ser superado permanentemente por la destreza tecnológica y económica de China, la administración Trump está recortando drásticamente el apoyo a la investigación científica y atacando la educación. En nombre de derrotar a los fantasmas de la "conciencia social" y el "estado profundo", esta administración se opone activamente al progreso en sectores críticos, mientras que les da a estafadores como la industria de las criptomonedas todo lo que desean.
etiquetas: paul krugman, china, estados unidos, economía, adelantamiento
Lo tenía todo para convertirse en una joya de la ingeniería naval: 145 metros de eslora, capacidad para levantar 1.900 toneladas a 180 metros de altura y un precio de 475 millones de dólares (unos 410 millones de euros). Pero el barco nunca llegará a trabajar. Maersk Offshore Wind, filial del gigante danés A.P. Møller-Mærsk, ha decidido cancelar el pedido de su colosal buque de instalación de aerogeneradores marinos cuando el proyecto estaba completado en un 98,9%, según ha confirmado la compañía a Reuters.
En su libro The Trillionaires: Power and Influence in the New Era of Hyper-Wealth, el exdirector editorial de BBC News, Kamal Ahmed, llega a una preocupante conclusion: el mundo podría…
The Wikimedia Foundation, the nonprofit organization that hosts Wikipedia, says that it’s seeing a significant decline in human traffic to the online encyclopedia because more people are getting the information that’s on Wikipedia via generative AI chatbots that were trained on its articles and search engines that summarize them without actually clicking through to the site.
The Wikimedia Foundation said that this poses a risk to the long term sustainability of Wikipedia.
A practical Spanner introspection cheatsheet: 4 key metrics for starting debugging performance issues
Leveraging a simple CLI tool to simplify and automate Spanner performance analysis.
Diagnosing performance issues in a distributed database like Cloud Spanner requires in some scenarios understanding its internal state. Spanner provides a powerful set of introspection tools such as its built-in SPANNER_SYS schema in addition to a wide range of various metrics.
This cheatsheet offers a practical guide to the four most critical metrics for diagnosing common performance problems.
Before diving into the details, it’s important to understand how Spanner collects this data. The introspection tables (SPANNER_SYS.*) don’t provide a real-time stream; instead, they store statistics aggregated over fixed, non-overlapping time intervals.
You’ll notice table names end with specific suffixes that define the aggregation window:
…_MINUTE: Aggregates data in 1-minute intervals.
…_10MINUTE: Aggregates data in 10-minute intervals.
…_HOUR: Aggregates data in 1-hour intervals.
For example, the QUERY_STATS_TOP_HOUR table contains data for the top CPU-consuming queries, with each row representing the statistics for a specific query over a one-hour period (e.g. from 08:00:00 to 08:59:59).
How to Query Intervals
Each row in these tables has an interval_end column. This timestamp marks the end of the aggregation window. To get the stats for the hour between 8 AM and 9 AM UTC on October 2nd, 2025, you would query for the interval that ends at 9 AM:
WHERE interval_end = '2025–10–02T09:00:00Z'
TOP vs. TOTAL Tables
_TOP_ Tables (e.g., LOCK_STATS_TOP_HOUR): These tables don’t store data for every single event. Instead, they capture statistics for the “top” N resource consumers (e.g., the rows with the most lock contention). This is a form of sampling to manage performance.
_TOTAL_ Tables (e.g., LOCK_STATS_TOTAL_HOUR): These tables provide a single value for the entire database over the interval, such as the total lock wait time across all rows. This is useful for establishing a baseline and calculating the relative impact of a “top” offender, as seen in the Lock Statistics query later.
This structure allows you to analyze both macro-level trends (using _TOTAL_ tables) and micro-level hotspots (using _TOP_ tables) at different resolutions.
Analyzing Performance with Core Introspection Queries
The following sections are structured around the core queries found in the 1hour.sql and 10min.sql files of the CLI tool. Each query answers a specific question about your database’s performance.
1. Top Queries in Read-Write Transactions
This query helps to identify slow or inefficient SQL statements running inside transactionsthat modify data, helping you find operations that for instance hold locks for too long and cause contention.
SELECT INTERVAL_END, TEXT, EXECUTION_COUNT, AVG_ROWS_SCANNED, AVG_LATENCY_SECONDS, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 99.0) * 1000 ) as latency_p99, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 95.0) * 1000 ) as latency_p95, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 50.0) * 1000 ) as latency_p50, TEXT_FINGERPRINT, AVG_CPU_SECONDS, CANCELLED_OR_DISCONNECTED_EXECUTION_COUNT, TIMED_OUT_EXECUTION_COUNT, ALL_FAILED_EXECUTION_COUNT, ALL_FAILED_AVG_LATENCY_SECONDS, REQUEST_TAG, RUN_IN_RW_TRANSACTION_EXECUTION_COUNT FROM SPANNER_SYS.QUERY_STATS_TOP_HOUR WHERE INTERVAL_END = @HOUR_INTERVAL AND RUN_IN_RW_TRANSACTION_EXECUTION_COUNT > 1 ORDER BY avg_latency_seconds, RUN_IN_RW_TRANSACTION_EXECUTION_COUNT DESC;
2. Top Queries in Read-Only Transactions
This query can help to identify SQL statements in a read-only context. While queries in this context don’t lock data, they can for example create resource contention.
SELECT INTERVAL_END, TEXT, EXECUTION_COUNT, AVG_ROWS_SCANNED, AVG_LATENCY_SECONDS, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 99.0) * 1000 ) as latency_p99, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 95.0) * 1000 ) as latency_p95, round( SPANNER_SYS.DISTRIBUTION_PERCENTILE(latency_distribution [OFFSET(0)], 50.0) * 1000 ) as latency_p50 FROM SPANNER_SYS.QUERY_STATS_TOP_HOUR WHERE INTERVAL_END = @HOUR_INTERVAL AND RUN_IN_RW_TRANSACTION_EXECUTION_COUNT = 0 ORDER BY avg_latency_seconds DESC;
3. Top Transactions
This query provides a higher-level view of entire transaction performance, helping you for instance to find the slowest-committing transactions or frequently aborted ones due to conflicts with other transactions.
SELECT INTERVAL_END, TRANSACTION_TAG, FPRINT, READ_COLUMNS, WRITE_CONSTRUCTIVE_COLUMNS, WRITE_DELETE_TABLES, ATTEMPT_COUNT, COMMIT_ATTEMPT_COUNT, COMMIT_ABORT_COUNT, COMMIT_RETRY_COUNT, COMMIT_FAILED_PRECONDITION_COUNT, AVG_PARTICIPANTS, AVG_TOTAL_LATENCY_SECONDS, ROUND( SPANNER_SYS.DISTRIBUTION_PERCENTILE( TOTAL_LATENCY_DISTRIBUTION [OFFSET(0)],99.0) * 1000 ) AS latency_p99, ROUND( SPANNER_SYS.DISTRIBUTION_PERCENTILE( TOTAL_LATENCY_DISTRIBUTION [OFFSET(0)],95.0) * 1000 ) AS latency_p95, ROUND( SPANNER_SYS.DISTRIBUTION_PERCENTILE( TOTAL_LATENCY_DISTRIBUTION [OFFSET(0)],50.0) * 1000 ) AS latency_p50 FROM SPANNER_SYS.TXN_STATS_TOP_HOUR WHERE INTERVAL_END = @HOUR_INTERVAL AND avg_total_latency_seconds IS NOT NULL ORDER BY avg_total_latency_seconds DESC;
4. Lock Statistics
This query is the most direct tool for diagnosing lock contention by pinpointing the row keys that are causing delays and quantifying how much time is wasted waiting for them.
SELECT CAST(s.row_range_start_key AS STRING) AS row_range_start_key, t.total_lock_wait_seconds, s.lock_wait_seconds, s.lock_wait_seconds / t.total_lock_wait_seconds frac_of_total, s.sample_lock_requests FROM spanner_sys.lock_stats_total_hour t, spanner_sys.lock_stats_top_hour s WHERE t.INTERVAL_END = @HOUR_INTERVAL AND s.interval_end = t.interval_end ORDER BY s.lock_wait_seconds DESC;
CLI Example
To showcase how this CLI tool helps in a real debugging scenario, I ran it against a database under load. The tool queries Spanner’s introspection tables and organizes the output, allowing for a quick diagnosis.
This snapshot surfaces some insights such as for example:
The Problem Query: The “Top Queries in RO Transaction Scope” section highlights an inefficient query:
SELECT * FROM Users WHERE name = @p1.
It has a very high AVG_LATENCY_SECONDS (over 4 seconds) and scans a massive 20 million rows (AVG_ROWS_SCANNED) on average. This is a classic sign of a missing index on the name column, forcing a full table scan for every execution.
Healthy Queries: In contrast, the other statements show a good performance. The INSERT statement is fast and efficient, and the SELECT queries that filter by user_id (the primary key) are fast, scanning only one row as expected.
Healthy Transactions: The “Top Transactions” section confirms that the high volume of writes (tagged as perftest_117) is healthy, with a very low COMMIT_ABORT_COUNT of only 1 out of over 54,000 attempts.
No Lock Contention: Crucially, the “Lock Statistics” section is empty. This confirms that despite the high number of writes, there are no significant lock conflicts or hotspots, reinforcing that the main performance issue is the inefficient read query, not write contention.
Enabling authentication for your Cloud Run application is easy ‒ a single mouse click (or parameter in your CI/CD) without writing any code. Calling this application from another is less straightforward. It may be easy when both a caller and called applications are hosted under the same identity in Google Cloud. In the rest of cases, it requires acquiring an identity token.
A problem begins with documentation. Sometimes it isn’t clear whether the described token is an identity token or access token. While the first is good for invoking endpoints of user’s applications on Google Cloud, the second is good only for calling Google APIs.
Another challenge is with examples that demonstrate getting an identity token from a metadata server available in Google Cloud VMs and other managed environments such as GKE or Cloud Run. However this method would not work anywhere else.
The following method lets you call a private Cloud Run service regardless whether the calling code runs in Google Cloud or elsewhere. This code example is in Python. But it should be easy to convert the example to other languages.
import google.auth import google.auth.transport.requests from google.oauth2 import id_token
# acquire ADC credentials, _ = google.auth.default() # validate ID token in credentials if hasattr(credentials, "id_token") and credentials.id_token: # return ID token if it is valid return credentials.id_token else: # try to refresh ID token auth_req = Request() credentials.refresh(auth_req) if hasattr(credentials, "id_token") and credentials.id_token: return credentials.id_token else: # acquire ID token for current identity from metadata server return id_token.fetch_id_token(auth_req, audience)
The google.auth.default() call intelligently searches for credentials in the local environment, checking the GOOGLE_APPLICATION_CREDENTIALS environment variable; if that’s not found, it looks for credentials created with the gcloud CLI. Then the code uses found credentials to validate and, if needed, to refresh the identity token. If it fails to get a valid identity token from the local credentials, the code fetches a new identity token from the metadata server which stores the credentials of the attached service account. Note that the last part works only when the application is deployed on Google Cloud. The audience argument provided to the fetch_id_token call claims that the token is used to prove identity to Cloud Run service. The argument should contain the URL of the service you are calling.
This powerful chain of discovery is what makes the code so portable. The code returns the acquired identity token which you can use as a bearer token in the Authentication header of HTTP requests to a Cloud Run service. For the full end-to-end demonstration watch the Youtube video.
For this code to work on your local machine, you only need to run one command: gcloud auth application-default loging. This securely stores your user credentials in a well-known location where the google.auth.default() call can find them. You do not need to manage service account keys.
If you want to know how to retrieve identity token when you explicitly provide a service account key or use work with a non-Google Identity Provider that is synchronized with Google Cloud using Workload Identity, leave a comment to this post.
No todos los días un presidente estadounidense da tantos detalles sobre el sometimiento de la Casa Blanca ante Tel Aviv. Y Trump lo hizo en el Parlamento israelí, ni más ni menos 😬
-La persona que más me visita en la Casa Blanca nació en Tel Aviv y siempre me trae dinero -Mr. Trump, creo que está hablando mucho… -Y siento que esa persona quiere más a Israel que a EE.UU., jajaja, es genial -Mr. President, por favor, la gente ya está murmurando… 🤦♂
El tratamiento, que se administra una sola vez y listo, ha permitido que la niña Eliana Nachem, encerrada en su casa para evitar infecciones, salga al mundo
La Plataforma en Defensa de las Montañas de Aragón señala que las graves irregularidades suponen que debe ser inmediatamente paralizado, retirado lo construido y repuesto a su estado original
Los fabricantes asiáticos valoran positivamente la capacidad productiva de la industria del automóvil española. Chery ha sido el primero en abrir la veda. El grupo chino, propietario de las marcas Omoda/Jaecoo, desembarcó el año pasado en España. España tiene una trayectoria de décadas siendo un foco para los fabricantes de coches. El país cuenta hoy con 17 plantas de producción de automóviles, algunas acumulan más de seis décadas, como la fábrica de carrocerías de Renault en Valladolid, que cumplió recientemente 60 años. No obstante...
"La localidad de Moros (Zaragoza) está enclavada en un alto rocoso que organiza su caserío en empinadas cuestas. La estrechez de algunas calles y sus grandes desniveles han contribuido a que el uso de las caballerías y especialmente los burros se conservara todavía en el año 2010. Con sus vecinos conocí todo sobre este noble animal".
El presidente Trump ha intentado recaudar 200 millones de dólares para un nuevo salón de baile en la Casa Blanca y ha recurrido a estas megacompañías y personas adineradas para obtener donaciones.
etiquetas: arco del triunfo, eeuu, trump, washington
A través del Opus Dei, HazteOír, CitizenGo, la Red Política de Valores del exministro Mayor Oreja y Vox, la ultraderecha española desempeña un papel clave en la difusión global de la agenda antiderechos, según un informe de la Asociación de Derechos Sexuales y Reproductivos
Un satélite chino cruzó el cielo de Canarias desintegrándose en su reentrada a la atmósfera, provocando una cadena de explosiones que se notó en varias islas y fue registrada por 13 estaciones de la Red Sísmica Canaria. La Red Española de Investigación de Bólidos y Meoteoritos concreta que se trata del satélite XYJ-7. Otro experto aeroespacial que cooperó en la identificación el investigador Marco Langbroek, de la Universidad Tecnológica de Delft (Países Bajos), precisa que fue puesto en órbita en 2020.
Las ayudas públicas a la renta, la vivienda, la familia y el desempleo sólo consiguen bajar tres puntos la tasa de pobreza en la Comunidad de Madrid, mientras en Baleares, Euskadi o Cataluña el impacto positivo es el doble. Es una de las conclusiones del último informe de la Red Europea de Lucha contra la Pobreza, que reclama mejoras en las ayudas autonómicas: "si se dan tanto a familias vulnerables como a las que no las necesitan, no funcionan contra la pobreza".
etiquetas: desigualdad, pobreza, ayudas públicas, estado bienestar
En una entrevista en "The Source" de la CNN, la entrevistadora Kaitlan Collins le pregunta al senador republicano por Montana, Tim Sheehy, qué piensa sobre el recorte de 1.000 millones de dólares de inversión por parte del gobierno de Trump en una infraestructura que daría muchos empleos en su Estado. En un primer momento, el senador achaca ese recorte al cierre del gobierno. Cuando la periodista le insiste para decirle que ese recorte no tiene que ver con el cierre gubernamental, sino que fue decidido antes, no sabe cómo responder.
Fuentes diplomáticas árabes y estadounidenses confirmaron a Israel Hayom que los mensajes en este sentido fueron enviados por el eje sunita moderado de los estados del Golfo a la Casa Blanca y a los arquitectos del plan de Gaza, los enviados del presidente Donald Trump, Steve Witkoff y Jared Kushner.
Valeria Castro ha anunciado que tiene que dejar su gira de conciertos temporalmente porque la han quebrado con su odio. El sueño de toda una vida, pausado por una horda de canallas que lo más cerca que estarán del talento será escuchar una de sus maravillosas canciones.No sé lo que es tener el talento de alguien como Valeria Castro, pero sí sé el dolor que supone sufrir esas campañas de acoso que acaban dejándote la salud mental arrasada por gente que jamás podría medirse en igualdad de condiciones usando la razón.
Está preparado para portar diferentes tipos de cargas y podrá lanzarse desde tierra firme, en un emplazamiento fijo, una aeronave o a bordo de un buque. Se compone de cuatro elementos: VAM (Vehículo Aéreo Multipropósito): plataforma ligera, desechable o recuperable, configurable con distintos tipos de cargas útiles (sistemas de inteligencia, vigilancia o armamento ligero) según el escenario. LSC (Lanzador de Superficie Configurable): módulo de lanzamiento adaptable a distintas plataformas terrestres o aéreas, que permite despachar un elevado n
No todos los días un presidente estadounidense da tantos detalles sobre el sometimiento de la Casa Blanca ante Tel Aviv. Y Trump lo hizo en el Parlamento israelí, ni más ni menos. -La persona que más me visita en la Casa Blanca nació en Tel Aviv y siempre me trae dinero -Mr. Trump, creo que está hablando mucho… -Y siento que esa persona quiere más a Israel que a EE.UU., jajaja, es genial -Mr. President, por favor, la gente ya está murmurando…
De los creadores del Premio Planeta 2023 a la presentadora de Antena 3 (Grupo Planeta) Sonsoles Ónega, llega ahora el Premio Planeta 2025 al colaborador de Antena 3 Juan del Val. Atentos al 2026 por si a las hormigas de Pablo Motos les da por escribir un libro...
La postura de Indonesia en la polémica del sports washing de Israel en pleno conflicto con Palestina ha supuesto un antes y un después en el mundo del deporte. El país asiático ha sido el más contundente en sus medidas contra el genocidio que vienen sufriendo los ciudadanos gazatíes y su gobierno ha dinamitado los planes del Mundial de Gimnasia que se celebra del 19 al 25 de octubre en Yakarta, capital indonesia. Ningún israelí participará en la gran cita. Como respuesta de rechazo a la matanza de civiles que ha venido incentivando el gobierno
etiquetas: gimnasia, indonesia, israel, veto deportivo
Los autores de un reciente trabajo publicado en la revista ‘Nature’ proponen reducir la superficie agraria para mitigar el cambio climático, proteger la biodiversidad y luchar contra la desertificación....
La situación de Ucrania ha abierto en Alemania el debate sobre la vuelta del servicio militar. Una variable que la Conferencia Episcopal Alemana no vería