MySQL de alto rendimiento: tabla de contadores
Tabla de contadores
Si la aplicación guarda el contador en la tabla, puede encontrar problemas de concurrencia al actualizar el contador. Las tablas de contadores son muy comunes en las aplicaciones web. usarse para almacenar en caché los datos de un usuario. Generalmente es una buena idea crear una tabla separada para almacenar contadores como recuentos de amigos, descargas de archivos, etc. Esto mantiene la tabla de contadores pequeña y rápida. El uso de una tabla separada puede ayudar a evitar la caché de consultas. invalidaciones y se puede utilizar con algunas de las técnicas más avanzadas que se muestran en esta sección p>
Debe mantener las cosas lo más simples posible Supongamos que hay una tabla de contador con una sola fila de datos que registra el número de clics. el sitio web.
El problema es que para cualquier transacción que quiera actualizar esta fila, este registro existe un bloqueo mutex global (mutex) que permitirá que estas transacciones se ejecuten en serie para obtener una mayor concurrencia. actualice el rendimiento, también puede guardar el contador en varias filas y seleccionar aleatoriamente una fila para actualizar cada vez. Para hacer esto, debe actualizar el contador de la siguiente manera.
Luego agregue filas de datos a esta tabla con anticipación y ahora seleccione una ranura aleatoria (ranura) para actualizar
Si desea reducir el tamaño de la tabla Para evitar que la tabla se vuelva demasiado grande, puede escriba una tarea periódica que combine todos los resultados en el espacio numérico y elimine todos los demás espacios
mysqlgt UPDATE daily_hit_counter as c
INNER JOIN (
gt; ; SELECCIONAR día SUM (cnt) COMO cnt MIN (espacio) COMO mslot
gt; FROM daily_hit_counter
GRUPO POR día
gt; USANDO (día)
gt; SET c cnt = IF (c slot = x mslot x cnt )
gt; c slot = IF (c slot = x mslot c slot)
mysqlgt; DELETE FROM daily_hit_counter WHERE slot lt;gt; AND cnt =;
Lee más rápido y escribe más lento
Para mejorar la velocidad de las consultas de lectura, A menudo es necesario crear algunos índices adicionales, agregar columnas redundantes o incluso crear tablas de caché y tablas de resumen. Sin embargo, estos métodos aumentarán la carga de escribir consultas y requerirán tareas de mantenimiento adicionales al diseñar una base de datos de alto rendimiento. técnicas comunes. Aunque la operación de escritura se vuelve más lenta, el rendimiento de la operación de lectura mejora significativamente.
Sin embargo, la operación de escritura más lenta no es el único precio que se paga por la operación de lectura más rápida. desarrollando operaciones de lectura y escritura
? Volver al catálogo MySQL de alto rendimiento
? ¿Se revela el marco ASP NET MVC?
Tecnología de índice Oracle
Videotutorial de capacitación sobre desarrollo de ASP NET lishixinzhi/Article/program/MySQL/201311/29673