{"id":247,"date":"2011-04-08T09:46:13","date_gmt":"2011-04-08T14:46:13","guid":{"rendered":"http:\/\/www.latindevelopers.com\/ivancp\/?p=247"},"modified":"2011-10-26T19:48:33","modified_gmt":"2011-10-27T00:48:33","slug":"show-table-status-mejorado","status":"publish","type":"post","link":"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/","title":{"rendered":"MySQL: show table status mejorado"},"content":{"rendered":"<p><img data-attachment-id=\"249\" data-permalink=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/logo-mysql-170x115\/\" data-orig-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" data-orig-size=\"100,67\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Logo mysql\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" data-large-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png\" class=\"alignright size-thumbnail wp-image-249\" title=\"Logo mysql\" src=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115.png\" alt=\"\" align=\"right\" \/>Desde la l\u00ednea de comando ciertamente tenemos el control absoluto (siempre y cuando tengamos los privilegios) pero no siempre tenemos una visi\u00f3n general. En este caso cuando estamos logueados a una base de datos MySQL lo primero que solemos intentar averiguar es la lista de tablas y talvez la lista de funciones y procedimientos almacenados de una base de datos.<\/p>\n<p>Este proceso suele ser doloroso por que en cuanto ejecutamos <code>show table status;<\/code> nos devuelve unas lineas que hasta da pereza interpretar. Lo que devuelve ese comando contiene varias columnas que vistas desde una herramienta visual como MySQL Workbench tienen mucho sentido, sin embargo desde la linea de comando no tanto. Pueden ver en la siguiente imagen como se ve un resultado en una ventana est\u00e1ndar de 80&#215;25:<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11.png\"><img data-attachment-id=\"245\" data-permalink=\"https:\/\/www.latindevelopers.com\/ivancp\/mysql_show_table_status_1-2\/\" data-orig-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11.png\" data-orig-size=\"675,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"show table status\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11-300x213.png\" data-large-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11.png\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-245\" title=\"show table status\" src=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11-300x213.png\" alt=\"\" width=\"300\" height=\"213\" srcset=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11-300x213.png 300w, https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_show_table_status_11.png 675w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Para ver el detalle completo podemos agrandar la ventana y disminuir la fuente, pero suele tomar un poco de tiempo hacer eso, realmente es fastidioso.<\/p>\n<p>Es por eso que hace mucho desarroll\u00e9 un script para mostrar solo lo que necesito incluyendo a los procedimientos almacenados y funciones, reci\u00e9n esta semana que tengo\u00a0 varias horas de ocio y puedo compartirla con ustedes.<\/p>\n<p>El resultado de mi script es mucho mas comprensible:<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1.png\"><img data-attachment-id=\"246\" data-permalink=\"https:\/\/www.latindevelopers.com\/ivancp\/mysql_sp_status-2\/\" data-orig-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1.png\" data-orig-size=\"676,483\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"mysql_sp_status\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1-300x214.png\" data-large-file=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1.png\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-246\" title=\"mysql_sp_status\" src=\"http:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1-300x214.png\" alt=\"\" width=\"300\" height=\"214\" srcset=\"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1-300x214.png 300w, https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/mysql_sp_status1.png 676w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\u00c9ste es c\u00f3digo fuente del procedimiento almacenado:<\/p>\n<pre lang=\"sql\">DELIMITER $$\r\n\r\nCREATE PROCEDURE `tools`.`sp_status`(dbname varchar(50))\r\nBEGIN \r\n\r\n-- Obteniendo informacion de las tablas\r\nSELECT\r\n TABLE_NAME as `Table Name`,\u00a0\r\n ENGINE as `Engine`,\r\n TABLE_ROWS as `Rows`,\r\n CONCAT(\r\n    (FORMAT((DATA_LENGTH + INDEX_LENGTH) \/ POWER(1024,2),2))\r\n    , ' Mb')\r\n   as `Size`,\r\n TABLE_COLLATION as `Collation`\r\nFROM information_schema.TABLES\r\nWHERE TABLES.TABLE_SCHEMA = dbname; \r\n\r\n-- Obteniendo las funciones y procedimientos\r\nSELECT ROUTINE_NAME as `Routine Name`,\u00a0\r\n ROUTINE_TYPE as `Type`,\r\n DATABASE_COLLATION as `Collation`\r\nFROM information_schema.ROUTINES\r\nWHERE ROUTINE_SCHEMA = dbname\r\nORDER BY ROUTINES.ROUTINE_TYPE, ROUTINES.ROUTINE_NAME;\r\nEND$$<\/pre>\n<p>Para invocarlo pueden escribir:<\/p>\n<pre>mysql&gt; call tools.sp_status(database());<\/pre>\n<p>Notar\u00e1n que he creado el procedimiento dentro de la base de datos <em>tools<\/em>, esto para que puedan llamarlo desde cualquier parte. Lamentablemente dentro de los procedimientos almacenados no es posible determinar la base de datos actual, es por eso que necesita de un par\u00e1metro con el nombre de la base de datos.<\/p>\n<p>He publicado el procedimento en <a href=\"http:\/\/forge.mysql.com\/tools\/tool.php?id=309\" target=\"_blank\">MySQL custom show table status<\/a><\/p>\n<p>Espero que les sea de mucha utilidad (como a mi).<\/p>\n<div id=\"_mcePaste\" class=\"mcePaste\" style=\"position: absolute; left: -10000px; top: 980px; width: 1px; height: 1px; overflow: hidden;\">\n<pre>`<\/pre>\n<\/div>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-247\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-247\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-247\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Desde la l\u00ednea de comando ciertamente tenemos el control absoluto (siempre y cuando tengamos los privilegios) pero no siempre tenemos una visi\u00f3n general. En este caso cuando estamos logueados a una base de datos MySQL lo primero que solemos intentar &hellip; <a href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-247\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-247\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-247\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2011\/04\/show-table-status-mejorado\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[7],"tags":[17,12,20],"jetpack_featured_media_url":"https:\/\/www.latindevelopers.com\/ivancp\/wp-content\/uploads\/logo-mysql-170x115-e1302270861102.png","jetpack_shortlink":"https:\/\/wp.me\/p1tEO5-3Z","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/247"}],"collection":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":14,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/247\/revisions\/255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/media\/249"}],"wp:attachment":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}