el caos del administrador corporativo :|

13/12/2004 - 02:56 por Paulino Padial | Informe spam
Bueno, solo queria escribiros para contaros algo que a estas horas me ha
dejado estupefacto, y es que, a pesar de que Miguel Egea ya me comento
esto que os voy a explicar ( que porsupuesto yo no le creí xDDD ).
Bueno, no es que desconfie de alguien tan sabio, solo que yo suelo
fiarme de las cosas que yo mismo compruebo ;)
Bueno al grano, tengo algo de tiempo porque estoy ayudando a mi novia a
hacer un howto de como configurar un servidor linux, y mientras estaba
tumbado leyendo algo de sql server.. en el capitulo de almacenamiento
interno, me dio el picazon de ver que hacia de verdad esta herramienta
cuando trabajaba con ella.

Me he quedado estupefacto cuando en algo tan simple como esto :

Creo una tabla que se llama "borrame", le añado dos campos uno identity
y un varchar.. ( el identity porspuesto lo declaro como la clave primaria ).
Abro el profiler que ya tenia puesto, y observo que hace mil
comprobaciones.. bueno , esto esta bastante bien. Aunque claro yo en el
Analizador de consultas me hubiera fallado al crear la tabla si ya
estubviese creada.. sin tanto rodeo.

Despues, meto registros en la tabla para que vaya creando numericos en
el campo identity. Cuando tengo unos 20 ( del 1 al 20 ), borro del 15 al
19, con lo que apartir de entonces, la secuencia de los numeros se ve
rota, ya que el identity sigue su curso sin rellenar los "huecos" "vacios".

Algo tan trivial como insertar datos en esa tabla de otra tabla que tb
tenia un campo con un valor identity, se me ocurre una forma que un
compañero me comento que hizo el en una de sus tablas ( yo ya sabia como
se hacia con el analizador de consultas( con el identity_insert ), pero
claro la forma que el me comentaba era muuuuuuuy sencilla y en 3 pasitos
). El hacia lo siguiente :
primero le daba a diseñar tabla y en el campo identity le daba a que no
era identity ( ponia, a No esa propiedad ) y guardaba.
segundo el copio datos de otra tabla uqe tenian identity y bueno todo
perfecto porque la mi tabla problematica, ( la receptora ) ya no tenia
un campo identity, si no un int.
tercero le daba a diseñar tabla y la ponia con identity a Si, y asi
ademas de no darle fallo, se le ponian bien todos los indices del
identity , es decir, empezaba de 1, hasta el numero de registro que
fuese, ( ejemplo = 1 al 100 ).

Bueno, la gracia esque despues de hacer esto, rebusco en las infinitas
lineas que a registrado profiler de la actividad del administrador
corporativo y esto es lo que encuentro:

Primero crea una tabla temporal identica a la mia llamada
dbo.tmp_borrame ( el nombre borrame, es porque mi tabla se llamaba así ) :P.

Segundo crea un CURSOR y carga en memoria los datos de mi tabla original
para irlos pasando a su tabla temporal. ( aqui me quedo flipao, usea,
que si tengo 8 millones de registros me lio a petar la memoria del
server?, es mas, puedo permitirme que en un servidor de produccion se
realize esta barbaridad para llenar log, y consumir el doble de
espacio???. el doble espacio es evidentek, porqeu hay un momento en el
que esisten dos tablas "iguales", la mia y la suya llamada tmp_).
Despues de esto, borra mi tabla. Luego la vuelve a crear, y viceversa


Bueno la verdad, no es por criticarlo, porque os diré qeu a mi me
resulta muy comodo para tareas como observar y dianosticar las
replicaciones, y los jobs junto con su estado, por ejemplo, que es mucho
mas "engorroso" hacerlo a mano ( por no decir casi que imposible :P ).

Esto solo lo expongo a la comunidad, para que lo sepais los que no lo
sabian, qeu yo , un alma inocente se a dado cuenta algo que podria
causar algun "digustillo" a mas de uno. Y por supuesto darme cuenta de
lo mucho uqe me queda por aprender y de investigar.

Sin mas me despido que ya es tarde ;)

Saludos Paulino Padial

ATTE: Miguel, lo digo y lo dire siempre, ¡eres una makina!
 

Leer las respuestas

#1 MAXI
13/12/2004 - 03:07 | Informe spam
Hola, bueno aca creo que estas mezaclando algunos problemas de EM y otros de
otras cosas, por ej: los identities funcionan asi tanto sea desde el EM como
desde el QA, me refiero a que te deja lues espacios, por eso yo los uso para
un solo fin (numerar registros para poder realizar querys muy especifijas,
en las cuales no me interesa el numero sino el orden)

Ahora lo del EM es asi porque esta herramienta en principio fue pensada para
trabajar no solo con SqlSErver sino con otros motores mas, que sucedio?? no
han cambiado esto y ha quedado una herramienta para SqlServer mal diseñada.

Por suerte todo esto se soluciona en la nueva version ;) (algunos detalles
tiene, pero se ha mejorado de forma consideral)

Un abrazo y gracias por compartir vuestra experiencia, ahhh y el dia que lo
veas al atorrante de Miguel decile que se pague unas Quilmes :-D




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Paulino Padial" escribió en el mensaje
news:
Bueno, solo queria escribiros para contaros algo que a estas horas me ha
dejado estupefacto, y es que, a pesar de que Miguel Egea ya me comento
esto que os voy a explicar ( que porsupuesto yo no le creí xDDD ).
Bueno, no es que desconfie de alguien tan sabio, solo que yo suelo fiarme
de las cosas que yo mismo compruebo ;)
Bueno al grano, tengo algo de tiempo porque estoy ayudando a mi novia a
hacer un howto de como configurar un servidor linux, y mientras estaba
tumbado leyendo algo de sql server.. en el capitulo de almacenamiento
interno, me dio el picazon de ver que hacia de verdad esta herramienta
cuando trabajaba con ella.

Me he quedado estupefacto cuando en algo tan simple como esto :

Creo una tabla que se llama "borrame", le añado dos campos uno identity y
un varchar.. ( el identity porspuesto lo declaro como la clave primaria ).
Abro el profiler que ya tenia puesto, y observo que hace mil
comprobaciones.. bueno , esto esta bastante bien. Aunque claro yo en el
Analizador de consultas me hubiera fallado al crear la tabla si ya
estubviese creada.. sin tanto rodeo.

Despues, meto registros en la tabla para que vaya creando numericos en el
campo identity. Cuando tengo unos 20 ( del 1 al 20 ), borro del 15 al 19,
con lo que apartir de entonces, la secuencia de los numeros se ve rota, ya
que el identity sigue su curso sin rellenar los "huecos" "vacios".

Algo tan trivial como insertar datos en esa tabla de otra tabla que tb
tenia un campo con un valor identity, se me ocurre una forma que un
compañero me comento que hizo el en una de sus tablas ( yo ya sabia como
se hacia con el analizador de consultas( con el identity_insert ), pero
claro la forma que el me comentaba era muuuuuuuy sencilla y en 3
pasitos ). El hacia lo siguiente :
primero le daba a diseñar tabla y en el campo identity le daba a que no
era identity ( ponia, a No esa propiedad ) y guardaba.
segundo el copio datos de otra tabla uqe tenian identity y bueno todo
perfecto porque la mi tabla problematica, ( la receptora ) ya no tenia un
campo identity, si no un int.
tercero le daba a diseñar tabla y la ponia con identity a Si, y asi ademas
de no darle fallo, se le ponian bien todos los indices del identity , es
decir, empezaba de 1, hasta el numero de registro que fuese, ( ejemplo = 1
al 100 ).

Bueno, la gracia esque despues de hacer esto, rebusco en las infinitas
lineas que a registrado profiler de la actividad del administrador
corporativo y esto es lo que encuentro:

Primero crea una tabla temporal identica a la mia llamada dbo.tmp_borrame
( el nombre borrame, es porque mi tabla se llamaba así ) :P.

Segundo crea un CURSOR y carga en memoria los datos de mi tabla original
para irlos pasando a su tabla temporal. ( aqui me quedo flipao, usea, que
si tengo 8 millones de registros me lio a petar la memoria del server?, es
mas, puedo permitirme que en un servidor de produccion se realize esta
barbaridad para llenar log, y consumir el doble de espacio???. el doble
espacio es evidentek, porqeu hay un momento en el que esisten dos tablas
"iguales", la mia y la suya llamada tmp_). Despues de esto, borra mi
tabla. Luego la vuelve a crear, y viceversa


Bueno la verdad, no es por criticarlo, porque os diré qeu a mi me resulta
muy comodo para tareas como observar y dianosticar las replicaciones, y
los jobs junto con su estado, por ejemplo, que es mucho mas "engorroso"
hacerlo a mano ( por no decir casi que imposible :P ).

Esto solo lo expongo a la comunidad, para que lo sepais los que no lo
sabian, qeu yo , un alma inocente se a dado cuenta algo que podria causar
algun "digustillo" a mas de uno. Y por supuesto darme cuenta de lo mucho
uqe me queda por aprender y de investigar.

Sin mas me despido que ya es tarde ;)

Saludos Paulino Padial

ATTE: Miguel, lo digo y lo dire siempre, ¡eres una makina!

Preguntas similares