Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Sacar peso en bytes de un select

Estas en el tema de Sacar peso en bytes de un select en el foro de Mysql en Foros del Web. Estimados, me gustaria saber si existe una forma de saber cuanto pesa en megas un select, es que necesito calcular el crecimiento en megas de ...
  #1 (permalink)  
Antiguo 19/03/2010, 07:29
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Sacar peso en bytes de un select

Estimados,

me gustaria saber si existe una forma de saber cuanto pesa en megas un select, es que necesito calcular el crecimiento en megas de tablas y base de datos de un periodo determinado.

Saludos
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #2 (permalink)  
Antiguo 19/03/2010, 07:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar peso en bytes de un select

Toda la información estadística de cada tabla se encuentra en la base INFORMATION_SCHEMA, específicamente en la tabla TABLES.
Respecto a "cuantos megas pesa un select", eso dependerá de varios factores y no solamente del tamaño de la tabla. Es lo que se denomina "costo de consultas", y para resolverlo existen ciertos algoritmos que se utilizan para optimizar las consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/03/2010, 07:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 432
Antigüedad: 14 años
Puntos: 11
Respuesta: Sacar peso en bytes de un select

y cual es la solución practica al problema ?

es decir cuales son aquellos algoritmos. ¿?

si no lo quieren decir detalladamente entonces por favor que digan el nombre del algoritmo para buscarlo en google.
  #4 (permalink)  
Antiguo 19/03/2010, 07:57
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: Sacar peso en bytes de un select

gracias,

bueno yo estoy haciendo un show status table, pero con eso obtengo la info de tabla ahora en el momento que hago la query, la cosa es tomar todos los datos de un mes x o de un determinado tiempo para saber cuanto subio y todo eso =/
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #5 (permalink)  
Antiguo 19/03/2010, 08:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar peso en bytes de un select

En esencia el costo de una consulta está determinado por la cantidad de bloques de datos necesarios para responderla (recordando que un bloque de datos en los DBMS es un segmento de 8Kb), y la cantidad de accesos a disco necesarios para recuperar los datos solicitados.

La idea es:
Tr = cantidad de tuplas de la relación
Br = cantidad de bloques que ocupa R
V(A,r) = cantidad de valores distintos del atributo A en la relación R.
Lr = Longitud de una tupla

SUPUESTO : R tiene una distribución UNIFORME.

Código SQL:
Ver original
  1. SELECT *
  2. FROM R
  3. WHERE A ?? 'a'
Donde ?? es { = , < , > , >= , <=, <>}

Costos de lectura: (CL)
a) Si Existe Indice agrupado (cluster) en A = ”a” entonces CL = Br / V(A,r)
b) Si existe Indice no agrupado (no cluster) en A = “a” entonces CL = Tr / V(A,r)
c) Si Existe Indice agrupado (cluster) en A ψ ”a” entonces CL = Br / 2 donde ψ es { < , > , <= , >= }
d) Si existe Indice no agrupado (no cluster) en A ψ “a” entonces CL = Tr / 2 donde ψ es { < , > , <= , >= }
e) Si no existe ningún índice entonces CL = Br

Ejemplo:
Código SQL:
Ver original
  1. SELECT Np
  2. FROM proveedor
  3. WHERE ciudad = 'Xxxx';
Datos:
Tr = 200 tuplas
Fb = 10 tuplas/ bloque
V(ciudad,proveedor) = 10

Si se cuenta con un índice cluster por ciudad, entonces el CL = Br / V(A,r)

Calculo de Br
Br = Tr / fb = 200 tuplas / 10 tuplas/ bloque = 20 bloques.

El costo de lectura de la selección es de 2 accesos a bloque, o sea que es recomendable crear un índice cluster por ciudad para mejorar la performance

Fuente: Apuntes de Bases de Datos II - U.Morón - Argentina
(Mi agradecimiento a los titulares de la cátedra de Bases de Datos II, de la U.M, quienes me proveyeron los apuntes durante la cursada)

Luego te paso los casos de JOIN INNER JOIN y producto cartesiano.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 19/03/2010, 08:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar peso en bytes de un select

PRODUCTO CARTESIANO
R X S = Tr . Ts

INNER JOIN
R |X| S
Si R ∩ S = ∅ entonces Tr . Ts
Si R ∩ S = { clave de R } entonces <= Ts
Si R ∩ S = { clave de S } entonces <= Tr
Si R ∩ S = { atributo no clave } entonces Tr . Ts / V(A, r ) ó Tr .Ts / V(A,s)

Ejemplo:
Cliente |X| Sucursal ( por codigo de cliente)
TC = 5000 tuplas
TS = 50 tuplas
BC= 250 bloques
BS = 2 bloques

Supuesto : No hay índices

1) Estrategia de iteración simple
Examinar todos los pares de tuplas posibles , 250.000 tuplas para examinar

2) Leer un bloque de cliente y para cada tupla de este bloque, leemos “secuencialmente” toda la tabla sucursal.
Leer toda la tabla cliente me “cuesta” 5000tuplas / 20 tuplas/bloque = 250 accesos.
Como la cantidad de lecturas completas de sucursal es TC=5000 tuplas, entonces el

TOTAL de accesos a sucursal es de 10.000 accesos. (5.000 . 2 )

COSTO TOTAL = 250 + 10.000 = 10.250 accesos a bloque (BC + BS . TC)

3) Iteración por bloques.

Leer un bloque de cliente y para este bloque, leemos todos los bloques de sucursal y encontramos todal las tuplas de la “junta” de este par de bloques.
Para leer toda la tabla sucursal necesito leer todos los bloques de clientes, y no las tuplas como en el caso anterior.
COSTO TOTAL = 250 (cliente) + 250 (sucursal) + 250 (sucursal) = 750 accesos (BC +
BC . BS)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 19/03/2010, 08:58
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: Sacar peso en bytes de un select

es que no busco el costo de la consulta sino el peso de la data dentro de select
que enrealidad es un select * from tabla. yo se que eso lo obtengo con un show table status, pero necesito obtener el peso de la data dentro de un rango de fechas =/
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #8 (permalink)  
Antiguo 19/03/2010, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar peso en bytes de un select

El select * from tabla sigue siendo una consulta, y como tal está regida por las mismas reglas y métodos que te he enunciado.
Simplemente quise ser un poco más detallado para el que le sirva (por ejemplo a tazzwt).
En tu caso es un barrido completo de tabla, que se cumple:
Cita:
e) Si no existe ningún índice entonces CL = Br
Lo que implica que es
Cita:
Accesos de lectura = (tuplas * longitud_Tupla)/8192
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: peso, select, byte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:10.