Optimizacion | DevTroce.com

Post Etiquetado en ‘Optimizacion’

  1. SubQuery SQL: cláusula FROM

    Agosto 16, 2010. Un Comentario.

    Los SubQuery’s o SubConsultas son herramientas poderosas si las sabemos usar, y son básicamente consultas anidadas en otras consultas la cual devuelve un conjunto de valores. Prácticamente un SubQuery puede ser utilizado en cualquier expresión y cláusula ya sean SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.

    Como el tema de los SubQuery es bastante largo lo iré partiendo en pedazos agrupados por expresión (recomendación de Juan Cuevas), como lo ven en el título ahora veremos los SubQuerys aplicados en la cláusula FROM.

    Ya sabemos que la cláusula FROM sirve para identificar las tablas de donde serán proveídos los datos a retornarse, como un SubQuery retorna un conjunto de valores también Continúa Leyendo SubQuery SQL: cláusula FROM

  2. Qué tipo de dato debo usar entre Decimal, Float o Real?

    Agosto 10, 2010. Dejanos el Primer Comentario..

    Hace tiempo que quería escribir sobre éste tema, ya que es muy importante considerar esto antes de comenzar a desarrollar un sistema nuevo (digo antes, porque si no lo hacen luego tendrán serios problemas).

    En mi suerte (si existe tal cosa) supe de ésto hace tiempo gracias a que un día estuve leyendo la documentación oficial sobre los tipos de datos en SQL Server, pero para desgracia de un par de compañeros laborales ellos tuvieron que descubrirlo por las malas, cuando las cosas no salían como soñaban que saldrían.

    La historia viene Continúa Leyendo Qué tipo de dato debo usar entre Decimal, Float o Real?

  3. [R#] ReSharper, mayor productividad y calidad de código con Visual Studio

    Agosto 4, 2010. Dejanos el Primer Comentario..

    No estoy escribiendo sobre ningún lenguaje nuevo ni derivado de C# por si piensan eso, R# ReSharper es una herramienta de la mano de JetBrains externa a Microsoft Visual Studio.

    ReSharper

    ¿Y qué es entonces? Es un agregado que se integra al IDE Visual Studio que nos ayuda en tiempo de desarrollo a escribir mejor nuestro código, a optimizarlo y Continúa Leyendo [R#] ReSharper, mayor productividad y calidad de código con Visual Studio

  4. Delete o Truncate Table?

    Agosto 4, 2010. 7 Comentarios.

    Muchos se preguntan constantemente que les conviene utilizar cuando quieren vaciar completamente una tabla, si uno es más rápido que el otro, cual es más óptimo?. Prácticamente todos los motores relacionales lo soportan.

    Y si, cada uno tiene sus beneficios y contras, es cuestión de que es lo que buscamos lograr.

    Para los que desconocen que hace el Truncate Table, es similar a ejecutar una sentencia Delete sin la claúsula Where

    Continúa Leyendo Delete o Truncate Table?

  5. Limpieza del historial de SQL Server

    Agosto 3, 2010. 4 Comentarios.

    Cuando trabajamos con SQL Server como motor de Base de Datos para nuestra producción, notaremos que éste crece rápidamente, ocupando mucho espacio en disco, uno de los tantos puntos que hace crecer su tamaño es el historial de sistema, que se almacena dentro de la BD llamada MSDB.

    Los datos más importantes que se guardan aquí es la historia de las restauraciones y backups hechos, así que cuanto más usemos éstos recursos, la BD crecerá más. Es muy importante tener la data de esto por muchos motivos, pero también tenemos que tener en cuenta que es sólo útil por cierto tiempo (la cantidad depende de nuestro objetivo, uso, necesidad). Por ello es Continúa Leyendo Limpieza del historial de SQL Server

  6. Analizar las consultas lentas de MySQL

    Agosto 3, 2010. Un Comentario.

    Es típico hoy día ver aplicaciones con tiempos de respuestas extremadamente lentos, no precisamente por que tiene mucha concurrencia, ni por la mala infraestructura de red, ni otros, sino por la falta de optimización de los query´s SQL. Este tipo de problemas escapa al error de sintaxis, al error lógico incluso, ya que el query cumple con su cometido, pero de una muy mala manera, técnicamente tumba el servidor por mucho tiempo y lo deja inutilizable.

    Solucionar éstos problemas no siempre es sencillo, ya que hallar que consultas producen estos problemas cuesta, y más aún Continúa Leyendo Analizar las consultas lentas de MySQL

  7. Compilación condicional en dotNet

    Julio 18, 2010. Un Comentario.

    En otros términos a la compilación condicional también se lo conoce como directivas de preprocesador, y ésto que quiere decir? significa que podemos determinar como se comportará el compilador con el código que acabamos de escribir, pudiendo así tomar distintas rutas de compilación. En la información contenida en la red, en su mayoría explican como hacer esto, con las constantes DEBUG y RELEASE, pero no si quisieramos personalizarlo más allá, ahora podremos ver como hacerlo a nuestro modo.

    Por ejemplo, supongamos que estamos desarrollando un sistema de facturación que lo hemos vendido a 2 clientes, para exagerar un poco son de distintos países, en gran manera la lógica de negocios es la misma, difiriendo en algunos pequeños detalles. Tenemos la pantalla en donde se hace la venta y debemos calcular el impuesto por el producto vendido, el primer cliente es de Continúa Leyendo Compilación condicional en dotNet

  8. Como exprimir nuestro ancho de banda de Internet en Windows

    Julio 14, 2010. 5 Comentarios.

    Mucho se escribe en la red sobre esto, existen muchos mitos urbanos por así decirlo, lo que hoy voy a mostrarles son 2 pequeñas configuraciones que podemos hacer para optimizar nuestra conexión a internet. Cuando me decidí a escribir esto articulo en realidad quería hacer sobre 1 solo punto, pero me pensé que iba a quedar flojo el tema así que decidí agregar una configuración más.

    La primera es tan típica y conocida, que no es ninguna novedad. Es configurar Windows para que no reserve ancho de banda para el Sistema Operativo en sí, es sencillo. Presionan la tecla Windows + R y les aparecerá Continúa Leyendo Como exprimir nuestro ancho de banda de Internet en Windows

  9. Como programar en n-Capas con C# (Parte 5)

    Julio 14, 2010. 15 Comentarios.

    Con ésta entrega cumpliremos con la capa de Presentación, utilizaremos todo lo que hemos visto hasta ahora aplicados a una interfaz de usuario, y como lo prometí, lo veremos implementado en winForm como en webForm.

    El primer ejemplo será Desktop, crearemos un formulario con una apariencia semejante al que ven en la imagen.

    frmCliente

    Evidentemente, un sistema real no lo harán así, el botón conectar emula el comportamiento de una pantalla de login, el boton crear mandará a la BBDD los datos de la caja, Listar rellenará la grilla y Buscar By Id se encargará de devolvernos un registro a partir de lo que carguemos en la caja de Id. Otra implementación interesante sería agregarle un identity a la Continúa Leyendo Como programar en n-Capas con C# (Parte 5)

  10. Como programar en n-Capas con C# (Parte 4)

    Julio 13, 2010. 4 Comentarios.

    En la cuarta entrega veremos una capa nueva, la capa de Negocios, como ya dije en los artículos anteriores hemos dado por terminado la capa de Acceso a Datos.

    Aquí es donde diremos como debe procesarse la información. Para este caso no voy a crear una estructura compleja de BBDD ya que el código de C# ya lleva bastante, pero reflejará claramente como se usa ésta capa en casos más complejos.

    Primeramente crearemos una tabla realmente simple, compuesta por 3 campos Continúa Leyendo Como programar en n-Capas con C# (Parte 4)

  11. Como programar en n-Capas con C# (Parte 1)

    Julio 12, 2010. 9 Comentarios.

    Este es un tema polémico del que se habla mucho y nada, digo que se habla mucho porque al buscar algo de información en Internet, uno se da cuenta, que esta plagado de sitios donde preguntan como aplicar programación en 3 capas, o N-Capas, pero en muy pocos lugares se responde con algo cierto y concreto, la mayoría hacen referencia a libros gordos que tardarías en leer semanas (no estoy en contra de la lectura, es un proceso largo nada más y casi todos buscamos aprenderlo un poco más rápido). Este artículo también será bastante largo y me aventuro a decir que me tomará varias noches escribirlo completamente, pero no será nada comparado con un libro con un lomo de 15 centímetros :P

    La primer gran confusión que noto, es que la mayoría no sabe diferenciar entre los conceptos Continúa Leyendo Como programar en n-Capas con C# (Parte 1)

  12. Solucionar problema de las impresoras que solo imprimen luego de reiniciar Windows

    Junio 24, 2010. Dejanos el Primer Comentario..

    Ya que escribí en el artículo anterior un tema de impresoras y problemas con Windows, aprovecharé para mostrar la solución a otro de los problemas, ésta vez no tan típicos pero que suceden con algunas impresoras de la marca Hewlett-Packard y éste sistema operativo.

    Una vez instalado el driver propietario de HP en Windows éste se apodera del mismo, y no siempre es la mejor opción, personalmente ya me ha pasado (y a algunos usuarios de la red) que tengo aplicaciones que no responden a la orden de impresión, por ejemplo tengo un documento Continúa Leyendo Solucionar problema de las impresoras que solo imprimen luego de reiniciar Windows

  13. Eliminar la cola de impresión en Windows

    Junio 24, 2010. Un Comentario.

    A quién no le ha pasado que siempre que necesita imprimir algo importante viene a cumplirse la ley de Murphy, ésta siempre se atasca en la cola de impresión, luego intentas eliminar la cola pero la cosa se pone peor, terminas nervioso y por poco no rompes toda la impresora.

    Para estos casos tenemos unos pequeños “trucos” para eliminarlo definitivamente de la cola, y volver a intentar la impresión. Básicamente consiste en detener el servicio de cola de impresión, eliminar los ficheros encolados, y volver a  iniciar el servicio.

    Para facilitar las cosas les recomiendo que agreguen el código que les pondré debajo en un fichero de texto y lo guarden como “Detener Cola de Impresion.bat”, y Continúa Leyendo Eliminar la cola de impresión en Windows

  14. Acelerar la carga de un sitio web con PHP

    Junio 20, 2010. Dejanos el Primer Comentario..

    Recién he leído un artículo que me ha gustado mucho en AyudaWordpress, trata de como obtener mayor velocidad de carga de las páginas hechas con PHP, en el original se centra en el CMS WordPress, pero no sólo es válido para él, sino también para cualquier otro CMS o sitio web que hayamos creado por nuestra cuenta.

    Es muy útil para reducir el trafico que generamos, para ello utilizaremos la librería Zlib, en algunos servidores con CPanel podemos activarlo manualmente, otros ya lo traen listo para usarlo, en el peor de los casos no tienen ésta opción sería cuestión de ponerse en contacto con su hosting.

    La configuración es tan sencilla que con 2 líneas de código reducimos hasta un 80% Continúa Leyendo Acelerar la carga de un sitio web con PHP

  15. Agregar opciones al menú de Windows / Compactar Restaurar Backup de Firebird

    Mayo 31, 2010. Dejanos el Primer Comentario..

    Hay muchas tareas que se convierten en rutinarias cuando trabajamos con un Sistema Operativo, cuando eso pasa siempre queremos automatizarlo lo más que podemos estas tareas “aburridas”, personalmente me sucede mucho en trabajo cuando tengo que crear el backup y restaurar las bases de datos de firebird que utilizamos, es por eso que me decidí crear unos menús para tales efectos. Se puede decir que con este post estaría matando dos pajaros de un tiro, como agregar los menús personalizados en Windows y como crear backups de firebird o restaurarlos..

    Básicamente lo que hace es al dar click derecho sobre le fichero de la BD, invoca a la herramienta gbak del firebird y le pasa los parametros correspondientes para procesarlos, véamos como agregar éstos menús.

    Primero debemos abrir el editor de registros de Continúa Leyendo Agregar opciones al menú de Windows / Compactar Restaurar Backup de Firebird

  16. Crear backup del Transaction Log y reducir su tamaño en SQL Server

    Mayo 6, 2010. Dejanos el Primer Comentario..

    Uno de los típicos problemas que aquejan a los DBA de SQL Server es el crecimiento montruoso del mismo, muchas veces ocupa varias veces más espacio que la propia base de datos. Este a su vez cumple un rol muy importante para este motor, no está allí por sólo capricho :P . Es el modo que el motor puede garantizar la integridad de los datos, toda transacción primeramente se escribe allí, y si y sólo sí el usuario confirma (COMMIT TRANSACTION) la operación pasa a la base de datos, también le sirve contra apagones, cortes de red o cualquier otro evento similar y así poder dejar los datos como estaban originalmente.

    Existen tres modos de recuperación del log: Completa, Registro Masivo y Simple (No entraremos en detalle de esto por hoy).

    La manera más típica de reducir el tamaño del Log es haciendo un Backup del mismo, tarea que recomiendo sea ejecutada períodicamente y en lo posible tener armado un plan de mantenimiento  con ejecuciones automáticas.

    1
    2
    3
    4
    5
    6
    
    BACKUP LOG [Devtroce] 
     
    TO DISK = N'C:\Backup\Devtroce.bak'
    WITH NOFORMAT, NOINIT,
    NAME = N'Devtroce-Transaction Log Backup',
    SKIP, NOREWIND, NOUNLOAD, STATS = 10;

    o bien, Continúa Leyendo Crear backup del Transaction Log y reducir su tamaño en SQL Server

  17. Configurar varias instancias de MySQL en un mismo equipo

    Enero 6, 2010. Dejanos el Primer Comentario..

    Para tener varias instancias independientes del motor de base de datos MySQL debemos hacer un par de configuraciones manuales, ¿Qué significa este concepto? Que podemos tener en la misma instalación, o mismo terminal, más de un motor, escuchando en distintos puertos (uno por cada instancia), teniendo la posibilidad de configurar de manera totalmente independiente y distinta cada una.

    No debemos abusar del uso de las instancias, porque por cada una se corre un proceso que consume recursos y no se comparten entre ellos, sólo es recomendable si es estrictamente necesario, o si queremos ahorrar costos para no Continúa Leyendo Configurar varias instancias de MySQL en un mismo equipo

  18. Mejorar la velocidad de conexión del SSH Server

    Diciembre 31, 2009. Dejanos el Primer Comentario..

    El protocolo SSH nos permite controlar un equipo de manera remota como sabemos, el punto central de este post no es precisamente explicar como funciona o como podemos usarlo, si no más bien es para la gente que ya lo utiliza y quiere aumentar la velocidad de conexión contra el servidor SSH.

    La lentitud se siente más cuando el servidor DNS no está correctamente configurado o se está en una red que no lo usa, este protocolo último ralentiza mucho la autenticación, ya que debe comprobar si esta en el servidor de dominios registrado la IP entrante, lo cual resulta bastante molestoso, la solución es sencilla nuevamente, sólo debemos deshabilitar el uso de ésta comprobación de la siguiente manera:

    Desde un editor de texto editamos el archivo

    1
    
    vim /etc/ssh/sshd_config

    y agregamos la siguiente linea al final del fichero

    1
    
    UseDNS no

    Finalmente reiniciamos el servicio con

    1
    
    /etc/init.d/ssh restart
  19. Realizar Consultas Recursivas en SQL Server

    Diciembre 26, 2009. 2 Comentarios.

    Como todo buen diseñador de base de datos sabe, es bastante común encontrarse con entidades recursivas en el diseño de nuestra BD, 2 ejemplos típicos son el jefe y el subordinado, en el diseño ambas personas se encuentran registradas como tuplas dentro de la entidad Persona o Funcionario (según el diseño que hemos tomado, incluso estaría mejor diseñado si se lo hace en base al cargo), al no existir 2 entidades que tengan cardinalidad 1:M, por que así obtendríamos duplicación de datos, debemos determinar un modo que ambos estén en la misma entidad y a su vez tener la capacidad de controlar quién es jefe de quién, esto se lograría agregando una columna más que sea del mismo dominio que su propia PK, es decir, la columna nueva sería FK de la PK que le determina, logrando así una cardinalidad 1:M recursiva.

    Otro ejemplo típico es el caso de los contratos, estos suelen tener la característica que vencen en una fecha determinada, por cuestiones de ventas/marketing al cliente se le facilita normalmente este proceso con una renovación de contrato Continúa Leyendo Realizar Consultas Recursivas en SQL Server

  20. Como destruir clases en C#

    Diciembre 15, 2009. Dejanos el Primer Comentario..

    Así como todos los que programamos con orientación a objetos, sabemos que el constructor de una clase sirve para la gestión de la clase en sí, en el momento de ser instanciada, del mismo modo los destructores son los gestionadores de la clase en caso que ésta deje de ser utilizada.

    Esto se utiliza frecuentemente para cerrar conexiones de red, archivos abiertos y otros semejantes, de este modo podemos tener una aplicación que sea más eficiente a la hora de rendir cuentas de rendimiento, obtendremos menos uso Continúa Leyendo Como destruir clases en C#

  21. Ganar velocidad de conexión en MySQL

    Diciembre 7, 2009. 2 Comentarios.

    Hace unas semanas atrás nos tocó una mala pasada con mis compañeros de trabajo, una de nuestras aplicaciones se conecta con JDBC a MySQL, en laboratorio y en casi todos los lugares donde estaba implementado, funcionaba velozmente, pero en la última implementación, teníamos retardos y timeouts, lo primero que hicimos fue subir el tiempo de espera del JDBC, y se conectaba pero tardaba demasiado, (siendo ya un tiempo muy incomodo para el usuario). Verificamos los cables de red, las NIC, y otras tantas cosas, que estando entre varios se nos agotaron las ideas.

    Luego nuestro compañero El Gran Che, nos dió la luz. Todo el embrollo se debía a una configuración del motor de la BD. Este cuando recibía peticiones de conexión tenía activo la opción de resolver el DNS, al “no estar correctamente configurada” la configuración de red Continúa Leyendo Ganar velocidad de conexión en MySQL