SQL 2005 Querys

Publicado en 'Programación' por Netmancusco, 26 Feb 2009.





  1. Netmancusco

    Netmancusco Miembro frecuente

    Registro:
    5 Nov 2008
    Mensajes:
    81
    Likes:
    0




    Buen dia Amigos del Foro veo q muchos por aqui saben de informatica no se pero a que nivel, quisiera que me apoyen con mis dudas y inquietudes y claro por q no decir ignorancia Gracias

    Tengo una base de datos en Sql con 50 Millones de Registros
    todo esto en una sola tabla Productos

    1) dividir esta tabla en sub tablas ejm 10 tablas de 5 millones
    2) Actualizar un de las Tablas ejm una ves q tenga la tabla 1 con 5 millones, esta tabla1 tendra una actualizacion en que consiste, tendre otra tablaX q esta tendra datos iguales ose q si encunetra datos iguales los elimine y si encuentra datos nuevos que los guarde en la tabla1. Actualizacion de tabla
    3) Bueno su Apoyo o consejos muchas Gracias

    bueno manejo Sql2005 y implemento modulos con vb6.0 y cositas en Net

    Gracias x el apoyo al Foro

    ----- mensaje añadido, 12:55 -----

    Amigo la Primera opción ya esta Resuelta....
    vamos ala segunda....
     


  2. Dr_Greg_House

    Dr_Greg_House Suspendido

    Registro:
    13 Abr 2008
    Mensajes:
    146
    Likes:
    1
    Orienta todas tus acciones del lado del servidor, optimiza tus store procedure y actua todo con comandos, si no, vas a estresar tu aplicacion. Del lado del hardware, usa placas que tengan tarjeta de red con especificacion gigabit
     
  3. Netmancusco

    Netmancusco Miembro frecuente

    Registro:
    5 Nov 2008
    Mensajes:
    81
    Likes:
    0


    Amigo sabes que es un Query ???
    necesito un query un ejm minimo thank
     
  4. Yaraher

    Yaraher Miembro maestro

    Registro:
    26 Mar 2007
    Mensajes:
    313
    Likes:
    2
    Tienes que investigar temas de sharding y fragmentación. Una BD (y un tabla) que está en esa cantidad de registros, requiere que empieces ya a manejar temas de ese tipo.

    Leer sobre desnormalización también te ayudará para problemas que pronto podrás enfrentar.

    Sobre lo segundo, en raiz es un query sencillo que compare dos resultados. Dependiendo de la data, la matemática booleana será un poco distinta, pero probablemente te sirva revisar conceptos de cursores y tablas temporales.

    Eso sí, no está de más recomendar que todo experimento lo hagas primero en un subset de esa BD (por temas de rendimiento) y que finalmente apliques los cambios mediante un batching (cada mil, diez mil, cien mil, etc., según la complejidad de tu tabla).

    ¡Suerte!
     
  5. Dudu_r

    Dudu_r Miembro frecuente

    Registro:
    6 Feb 2009
    Mensajes:
    134
    Likes:
    4
    :O , yo siempre he dicho que la ayuda debe ser lo mas precisa posible, a ver segun mi experiencia en sql server podrias hacer lo siguiente .

    Particionar tu tabla , porque? , pues cuando tienes una tabla de millones de registros es la forma mas optima de acceder a ella ( me parece muy raro que tengas una tabla productos con 50 millones , a mi si me dicen productos me suena a un catalogo ) , pero en fin sigamos, al hacer la particion lo que vas a lograr es dividir tu informacion en diferentes filegroups .

    Para esto debes definir algo en comun ( sera el codigo de producto ) para poder particionar por rangos , por ejemplo si tienes un producto codigo A000000001 , otro A00000002 y asi hasta el A99999999 , pues podrias crear particiones 01,02 ,por rangos digamos la 01 seria del 50 000 hasta el 100 000 . Como se hace mmm pues primero creas las funciones como:
    Create Partition Function BLABLA(nvarchar(Xx))
    ..
    luego un esquema
    CREATE PARTITION SCHEME BLABLAYY
    AS PARTITION BLABLA TO (fg1,fg2,fg3)

    luego creas tu tabla particionada

    CREATE TABLE OWNERX.Productos
    (ProductoID int, Nombre nvarchar(30))
    ON BLABLA (Nombre)
    GO

    y asi... , porsiacaso tienes que tener la version Enterprise para poder usar tablas particionadas y google it .
     
  6. Netmancusco

    Netmancusco Miembro frecuente

    Registro:
    5 Nov 2008
    Mensajes:
    81
    Likes:
    0
    Amigos el level del foro en SQL ta bajito....
    Ya termine todo Gracias x nada
     
  7. Dr_Greg_House

    Dr_Greg_House Suspendido

    Registro:
    13 Abr 2008
    Mensajes:
    146
    Likes:
    1
    No es que este bajito, lo que pasa es que lo quieres todo facil como buen peruano que eres. Y ese nick solamente parece ser de adorno nomas o es una muestra de destilacion de ego. Si quieres algo, hazlo tu mismo e investiga, y si no, repasa ingles y visita msdn.
     
  8. Netmancusco

    Netmancusco Miembro frecuente

    Registro:
    5 Nov 2008
    Mensajes:
    81
    Likes:
    0
    Weno Doctor Greg creo que con tu Primera respuesta....
    ya me dijiste mucho de como solucionar Implementando Pc's y un Procedure ?

    la verdad solo use un select y un insert
    tan sencillo como eso.....

    Well igual Gracias x la Molestia de responder.
     
  9. Yaraher

    Yaraher Miembro maestro

    Registro:
    26 Mar 2007
    Mensajes:
    313
    Likes:
    2
    Maneras hay muchas, claro está. Pero lo importante es tener los conceptos que te permitan escalar la solución. De todas formas trata de revisar los conceptos que comenté, estoy seguro que te ayudarán mientras esa BD sigue creciendo.

    Un SP está compuesto de las instrucciones normales, así que no descarta tu solución ni lo que te respondió Doctor House; la ventaja del SP es que el SGDB crea la ruta óptima para su ejecución si es algo que vas a hacer eventualmente y finalmente se convierte en una rutina común que puedes almacenar.

    Y sobre lo del nivel de SQL, pues es imposible poder afirmar algo sin hacer una encuesta completa entre a todos ;). De todas formas, si algo es cierto, es que en este mundo de ORMs, y BD que dejan de ser relacionadas, el SQL puro se está volviendo en muchos algo que no tocan directamente. Lo cual es potencialmente negativo.
     
  10. Dr_Greg_House

    Dr_Greg_House Suspendido

    Registro:
    13 Abr 2008
    Mensajes:
    146
    Likes:
    1
    Ya con el comentario de yaraher mejor cambiate de nick por verguenza propia, conozco gente developer en cuzco que es mejor representante de programadores ke tu y no destilan ego.

    Ah, si solamente has podido hasta access, no alucines que access es lo mismo que sql server. Everybody lies.
     
  11. Babyboy03

    Babyboy03 Miembro maestro

    Registro:
    28 Oct 2008
    Mensajes:
    918
    Likes:
    56
    No comencemos con las disputas. jeje el patita tendra un ego alto seguramente. Pero respeten las opiniones.xD!
     
  12. Dudu_r

    Dudu_r Miembro frecuente

    Registro:
    6 Feb 2009
    Mensajes:
    134
    Likes:
    4
    lol ? , esa aplicacion deberia caer si esta consultando esos 50 ,30, 5 millones de registro cada segundo por varios usuarios . Al menos eso entendi.... Yo trabajo en una empresa concocida de telecomunicaciones y si alguien plantearia tal solucion de select e insert .. pasaria la verguenza mas grande de su vida , luego de la lluvia de refutasiones con fundamento que recibiria.
     
  13. Dr_Greg_House

    Dr_Greg_House Suspendido

    Registro:
    13 Abr 2008
    Mensajes:
    146
    Likes:
    1
    Intuyo que la proxima alucinada de ese man sera blasfemar el nombre de LINQ en vano, mezclandolas con sentencias lambda. Ahi si por verguenza estaria al mismo level de un dev-emo
     
  14. Ludvick

    Ludvick Miembro nuevo

    Registro:
    8 Abr 2009
    Mensajes:
    13
    Likes:
    1
    Gracias por los comentario Dudu_r y Yaraher justo hace poco tuve un tema similar. En Caterpillar se manejan tablas de catalogos de nuevos productos con mas de 2 millones de registros y es por que cada accesorio, parte, pieza es un registro en esta base de datos, asi que un tema de historicos de estas facilmente supera los 50 millones.

    El tema de particiones me parece complejo, hace poco necesite particionar una tabla en Oracle por el campo fecha, pero como manejar el tema hacia adelante. Cuando creas las particiones de tipo rango el manejador te brinda sintaxis para colocar los datos a una particion dependiendo de la condicion de rango, pero que ocurre cuando un rango no entra en la condicion, ira a la particion por defecto seguro responderan pero que pasa con los nuevos registros, es necesario constantemente estar creando particiones conforme va creciendo la informacion de la tabla?.

    Si me pudieran aclarar dicho panorama quedare agradecido.

    Saludos,
    Ludvick
     
  15. Creed_Ramiro

    Creed_Ramiro Suspendido

    Registro:
    3 Dic 2009
    Mensajes:
    8
    Likes:
    0

    Al crear tu tabla particionada en oracle en la definicion crea las particiones

    ejemplo en tu sentecia de creacion de Tabla.
    part1 values less than (11)
    part2 values less than (21)
    part3 values less than (31)
    part4 values less than (Maxvalue)

    La ultima Particion almacenara todos los datos que no han sido Tomados
    por ninguna particion. ya que tu indice es numerico el cual posee un orden por ello cada registro nuevo ingresado se guardar en la ultima particion lo que si debes tener en cuenta es el tamaño de tu tabla para q no desborde por espacio
    Ademas estar al pendiente del tablespace creado para esa tabla la debes aumentar
     
  16. fitoso

    fitoso Miembro nuevo

    Registro:
    14 Mar 2010
    Mensajes:
    1
    Likes:
    0

    JAJAJAJAJA QUE CAG... DE RISA, este tipo no sabe ni donde esta parado .... alquien que sepa un ninimo de sql sabe perfectamente que es un query.

    SIGO RIENDOME CARAJ.... imaginense !!!!!!una tabla con 50 millones de registros!!!!!, este papin ha estudiado en el instituto Huapaya de Burga y Koki Gonzales. Tener 50 millones de registros en una tabla productos es un crimen, estudiate algo de normalizacion hijito, pero antes pasa por tu coquito.

    Y encima este conchudo se atreve a decir que el nivel de este foro es bajo.... QUE CARA ROTA. Lo que propone en el primer parrafo, no tiene ni pies ni cabeza, dividir su tablita y acutalizarla aqui o alla y entonces.... jajajajaja, ni el mismo se entiende.
    Que colera da caraxo cuando un tipin quiere darse las de muy sabelotodo y no sabe ni mela.

    Y para terminar dice que lo arreglo con un insert, JAJAJAJAJAJAJAJAJAJAJAJAJAJAJ
    que buena tio .... de verdad te digo que me has hecho reirrrrr. Estudia papa e investiga, pobre de la empresa en la que trabajas, ese sistema que hace una busqueda en tu tablita Productos debe ser mas lento que TORTUGA COJA.

    Saludos Cordiales