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
| ||||
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) |
| |||
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. |
| ||||
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: |
| ||||
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:
Donde ?? es { = , < , > , >= , <=, <>}Ver original 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:
Datos:Ver original 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) |
| ||||
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) |
| ||||
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: |
| ||||
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: Lo que implica que ese) Si no existe ningún índice entonces CL = Br 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: |