{"id":45,"date":"2009-06-28T11:34:41","date_gmt":"2009-06-28T15:34:41","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/bbarrera\/?p=45"},"modified":"2009-06-28T11:34:41","modified_gmt":"2009-06-28T15:34:41","slug":"recomendaciones-para-usar-mysql","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/bbarrera\/2009\/06\/recomendaciones-para-usar-mysql\/","title":{"rendered":"Recomendaciones para usar Mysql"},"content":{"rendered":"<p>MYSQL se ha posicionado como una de las base de datos preferidas para los clientes que utilizan CMS en el mundo<strong><\/strong>.\u00a0 No obstante, en portales medianos a grandes, donde el efecto del <strong>OCEE Accelerator <\/strong>comienza a disminuir por la <strong>cantidad de contenidos generados <\/strong>diariamente y la <strong>frecuencia de publicaci\u00f3n <\/strong>es medida en minutos, debemos implementar medidas para prevenircualquier cuelge del servicio.<\/p>\n<p><!--[if gte mso 9]&gt;  Normal 0   21   false false false  ES-TRAD X-NONE X-NONE              MicrosoftInternetExplorer4              &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--> &lt;!--  \/* Font Definitions *\/  @font-face \t{font-family:\"Cambria Math\"; \tpanose-1:2 4 5 3 5 4 6 3 2 4; \tmso-font-charset:1; \tmso-generic-font-family:roman; \tmso-font-format:other; \tmso-font-pitch:variable; \tmso-font-signature:0 0 0 0 0 0;} @font-face \t{font-family:Calibri; \tpanose-1:2 15 5 2 2 2 4 3 2 4; \tmso-font-charset:0; \tmso-generic-font-family:swiss; \tmso-font-pitch:variable; \tmso-font-signature:-1610611985 1073750139 0 0 159 0;}  \/* Style Definitions *\/  p.MsoNormal, li.MsoNormal, div.MsoNormal \t{mso-style-unhide:no; \tmso-style-qformat:yes; \tmso-style-parent:\"\"; \tmargin-top:0cm; \tmargin-right:0cm; \tmargin-bottom:10.0pt; \tmargin-left:0cm; \tline-height:115%; \tmso-pagination:widow-orphan; \tfont-size:11.0pt; \tfont-family:\"Calibri\",\"sans-serif\"; \tmso-ascii-font-family:Calibri; \tmso-ascii-theme-font:minor-latin; \tmso-fareast-font-family:Calibri; \tmso-fareast-theme-font:minor-latin; \tmso-hansi-font-family:Calibri; \tmso-hansi-theme-font:minor-latin; \tmso-bidi-font-family:\"Times New Roman\"; \tmso-bidi-theme-font:minor-bidi; \tmso-fareast-language:EN-US;} .MsoChpDefault \t{mso-style-type:export-only; \tmso-default-props:yes; \tmso-ascii-font-family:Calibri; \tmso-ascii-theme-font:minor-latin; \tmso-fareast-font-family:Calibri; \tmso-fareast-theme-font:minor-latin; \tmso-hansi-font-family:Calibri; \tmso-hansi-theme-font:minor-latin; \tmso-bidi-font-family:\"Times New Roman\"; \tmso-bidi-theme-font:minor-bidi; \tmso-fareast-language:EN-US;} .MsoPapDefault \t{mso-style-type:export-only; \tmargin-bottom:10.0pt; \tline-height:115%;} @page Section1 \t{size:612.0pt 792.0pt; \tmargin:70.85pt 3.0cm 70.85pt 3.0cm; \tmso-header-margin:36.0pt; \tmso-footer-margin:36.0pt; \tmso-paper-source:0;} div.Section1 \t{page:Section1;}  \/* List Definitions *\/  @list l0 \t{mso-list-id:881525591; \tmso-list-template-ids:-680498030;} ol \t{margin-bottom:0cm;} ul \t{margin-bottom:0cm;} --&gt; <!--[if gte mso 10]&gt;--><br \/>\n \/* Style Definitions *\/<br \/>\n table.MsoNormalTable<br \/>\n\t{mso-style-name:\"Tabla normal\";<br \/>\n\tmso-tstyle-rowband-size:0;<br \/>\n\tmso-tstyle-colband-size:0;<br \/>\n\tmso-style-noshow:yes;<br \/>\n\tmso-style-priority:99;<br \/>\n\tmso-style-qformat:yes;<br \/>\n\tmso-style-parent:\"\";<br \/>\n\tmso-padding-alt:0cm 5.4pt 0cm 5.4pt;<br \/>\n\tmso-para-margin-top:0cm;<br \/>\n\tmso-para-margin-right:0cm;<br \/>\n\tmso-para-margin-bottom:10.0pt;<br \/>\n\tmso-para-margin-left:0cm;<br \/>\n\tline-height:115%;<br \/>\n\tmso-pagination:widow-orphan;<br \/>\n\tfont-size:11.0pt;<br \/>\n\tfont-family:\"Calibri\",\"sans-serif\";<br \/>\n\tmso-ascii-font-family:Calibri;<br \/>\n\tmso-ascii-theme-font:minor-latin;<br \/>\n\tmso-hansi-font-family:Calibri;<br \/>\n\tmso-hansi-theme-font:minor-latin;<br \/>\n\tmso-fareast-language:EN-US;}<\/p>\n<p class=\"MsoNormal\"><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">Cuando se sirve los contenidos dinamicos en el Servidor es el momento mas crucial de la base de datos. En este punto, dos mecanismos act\u00faan en CMS para minimizar la carga de la base de datos:<\/span><\/p>\n<ol type=\"1\">\n<li class=\"MsoNormal\"><strong><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">OCEE Accelerator: <\/span><\/strong><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">Que<strong> <\/strong><\/span><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">posee      en cache los elementos m\u00e1s utilizados del sistema de archivos virtual      (VFS) para evitar sucesivas consultas a la base de datos. y <\/span><\/li>\n<li class=\"MsoNormal\"><strong><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">Flexcache: Que <\/span><\/strong><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">contiene las principales      p\u00e1ginas <span> <\/span>y sus variantes a entregar      a los navegantes.<\/span><\/li>\n<\/ol>\n<p class=\"MsoNormal\"><span style=\"font-size: 12pt;font-family: &quot;Times New Roman&quot;,&quot;serif&quot\">A\u00fan con estos elementos en acci\u00f3n, al momento de reconstituir la CACHE <span> <\/span>luego de una publicaci\u00f3n, habr\u00e1 un uso intenso de la base de datos y hay que lograr que la respuesta de la misma sea eficaz. De lo contrario, vamos a tener internautas esperando que la CACHE se genere para luego recibir el contenido.<\/span><\/p>\n<p>El proceso de <strong>\u2018tuning\u2019 <\/strong>de MYSQL requiere de un monitoreo continuo y un previo an\u00e1lisis del entorno y aplicativo sobre el cual se est\u00e1 trabajando para obtener los mejores resultados. Espero que estos elementos sirvan de punto de partida para una mejor comprensi\u00f3n del tema.<\/p>\n<p>A continuaci\u00f3n, algunas recomendaciones b\u00e1sicas para mejorar el rendimiento del motor de base de datos MYSQL.<\/p>\n<p><strong>ELECCI\u00d3N DEL FORMATO DE TABLA: MYISAM \/ INNODB<\/strong><\/p>\n<p>El formato de tabla depender\u00e1 mayormente del tipo de datos a almacenar y las consultas que vamos a realizar en ellos. Para el caso particular del modelo de datos de OpenCMS, <strong>INNODB <\/strong>es la opci\u00f3n que ha demostrado mejores resultados a nivel de rendimiento en funci\u00f3n de nuestra experiencia.<\/p>\n<p>La caracter\u00edstica principal de INNODB es que soporta <a title=\"Transacci\u00f3n (base de datos)\" href=\"http:\/\/blog.tfsla.com\/wiki\/Transacci%C3%B3n_%28base_de_datos%29\">transacciones<\/a> de tipo <a title=\"ACID\" href=\"http:\/\/blog.tfsla.com\/wiki\/ACID\">ACID<\/a> y bloqueo de registros e <a title=\"Integridad referencial\" href=\"http:\/\/blog.tfsla.com\/wiki\/Integridad_referencial\">integridad referencial<\/a>.<\/p>\n<p><strong>INDICES DE LA BASE DE DATOS<\/strong><\/p>\n<p>A lo largo de diferentes proyectos utilizan tecnolog\u00eda OpenCMS hemos detectado que la instalaci\u00f3n por defecto deja lugar para <strong>mejores con relaci\u00f3n a los \u00edndices<\/strong>. A partir de un buen conocimiento del modelo de datos de OpenCMS pueden crearse \u00edndices adicionales para <strong>mejorar el rendimiento <\/strong>de la base de datos.<\/p>\n<p><strong>TAMA\u00d1O DEL BUFFER<\/strong><\/p>\n<p>La lectura del contenido de una base de datos EN MEMORIA es <strong>ampliamente superior <\/strong>a la lectura del contenido de una base de datos en DISCO. En la medida que podamos tener la mayor porci\u00f3n posible de base de datos en la memoria de nuestro equipo, mejor ser\u00e1 el tiempo de respuesta.<\/p>\n<p>Para lograr esto, debemos prestar especial atenci\u00f3n KEY_BUFFER_SIZE para el caso de tablas MYISAM e INNODB_BUFFER_SIZE para INNODB. La memoria total que podemos asignar al buffer <strong>est\u00e1 alrededor del 70% al 80% <\/strong>de la memoria total del equipo en el caso de servidores de base de datos dedicados.<\/p>\n<p><strong>CACHE DE CONSULTAS (QUERY CACHE)<\/strong><\/p>\n<p>MYSQL utiliza un cache que almacena el texto de una consulta <code>SELECT<\/code> junto con el resultado. En el caso de recibir <strong>una consulta id\u00e9ntica <\/strong>posteriormente, el servidor devuelve el resultado desde la cach\u00e9 de consultas en lugar de parsear y ejecutar la consulta nuevamente.<\/p>\n<p>Lo recomendable es comenzar con un QUERY CACHE de tama\u00f1o por defecto (16mb) e ir subiendo el tama\u00f1o del mismo a medida que la <strong>efectividad del cache sube <\/strong>y la cantidad de bloques disponibles baja.<\/p>\n<p><strong>CACHE DE CONEXIONES (THREAD)<\/strong><\/p>\n<p>Cada conexi\u00f3n que realizan los servidores Web a la base de datos implica la creaci\u00f3n de un nuevo \u2018thread\u2019. En vez de terminar el hilo una vez cerrada la conexi\u00f3n, el hilo puede mantenerse en el servidor para ser utilizado por la pr\u00f3xima conexi\u00f3n y hacer el<strong> proceso m\u00e1s eficiente<\/strong>. Esto es configurable a partir del THREAD_CACHE_SIZE<\/p>\n<p><strong>TABLAS ABIERTAS \/ TEMPORALES<\/strong><\/p>\n<p>Por cada tabla que tenemos en MYSQL podemos pensar en un equivalente a un archivo abierto. La cantidad de tablas abiertas est\u00e1n afectadas por los valores TABLE_CACHE, MAX_CONNECTIONS y MAX_TMP_TABLES.<\/p>\n<p>Una configuraci\u00f3n inadecuada de estas variables puede llevar a superior l\u00edmites impuestos por el sistema operativo generando una importante degradaci\u00f3n del rendimiento.<\/p>\n<p>Respecto de las tablas temporales, es importante monitorear el estado de la cantidad de tablas temporales generadas en DISCO y tratar de modificar la configuraci\u00f3n o el formato de las mismas para lograr que esas tablas sean persistidas en memoria.<\/p>\n<p><strong>LIMPIEZA DE TABLAS HIST\u00d3RICA<\/strong><\/p>\n<p>Por cada publicaci\u00f3n realizada en OpenCMS se guarda un registro de la operaci\u00f3n en la tabla del historial. Con el tiempo, <strong>esta tabla puede crecer <\/strong>considerablemente afectando nuestra habilidad para <strong>resguardo la base <\/strong>y haciendo que el tama\u00f1o de la misma <strong>afecte negativamente <\/strong>a los componentes de CACHE. Por lo tanto, es recomendable realizar una depuraci\u00f3n de CMS_PUBLISH_HISTORY de acuerdo a procedimientos probados y seguros.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MYSQL se ha posicionado como una de las base de datos preferidas para los clientes que utilizan CMS en el mundo<\/p>\n","protected":false},"author":2741,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8715],"tags":[9442],"class_list":["post-45","post","type-post","status-publish","format-standard","hentry","category-hace-poco","tag-bases-datos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/users\/2741"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"predecessor-version":[{"id":47,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/posts\/45\/revisions\/47"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/bbarrera\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}