Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Kase en 20 Mayo 2011, 10:19 am



Título: blokeo por registro innodb + myisam
Publicado por: Kase en 20 Mayo 2011, 10:19 am
siguiendo los consejos de  el-brujo  e construido mi base de datos con la mayoria de las tablas myisam y dejando  solo unas cuantas innoDB   la mas importante en este momento es esta:

tengo una tabla empresa {datos tipicos, letras_de_n_serie, n_de_serie} y una tabla cupon {serie_compuesta ,otros datos}
 en el que para mantener los numeros de serie con una cantidad vaja de caracteres, los genero apartir de los datos de la empresa, y sumando 1 a n_de_serie cada que genero un nuevo registro. y reseteandolo a 0 y cambiando la combinacion de letras cuando llega a 1000.

como el sistema tiene axeso concurrido, para evitar incongruencias de datos deberia blokear la tabla empresa. pero eso aria esperar al resto de los clientes, deberia poder blokear solo el registro a modificar y permitir el axeso libre.  pero para eso necesito convertir esa tabla a innoDB (actualmente es myisam)
pero es una tabla concurrida y la necesito como myisam

solucion, 
series {letras_de_n_serie, n_de_serie, idempresa}  esta tabla puedo blokearla a nivel tabla, pues es de axeso poco concurrido, pro para obtimizar, prefiero convertirla a innoDB que en su documentacion dice tener blokeo por registros..
el problema es

como se blokea por registro?  asta este momento no e visto una sintaxys clara para hacerlo =<


Título: Re: blokeo por registro innodb + myisam
Publicado por: Nakp en 21 Mayo 2011, 03:17 am
pues por lo general, yo prefiero utilizar todo en InnoDB, a menos que necesite buscar en los campos de texto, pero existen alternativas a eso

creo que hace unos dias pedias un benchmark entre SGBD, ahora te traigo uno bastante antiguo sobre motores de BD :) pero creo que de algo te servira :P

http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

hasta donde se, no se puede bloquear una fila en MyIsam, es lo que marca la gran diferencia entre ambo motores, te recomendaria que prefieras InnoDB sobre MyIsam a menos que quieras buscar en el texto :P y si puedes mejor usa sphinxsearch que es muchiiiiisimoooo mas rapido :)


Título: Re: blokeo por registro innodb + myisam
Publicado por: Kase en 21 Mayo 2011, 03:57 am
tengo una consulta muy usada entre 7 tablas relacionales en las que se que su integridad de datos es correcta.. asi que no necesito que el sistema compruebe  la integridad... y myisam en velocidad de consultas es superior a innoDB

¿Qué son muchísimas visitas? Recuerda que todo es relativo, y más que las visitas lo importante serán las consultas por segundo.

Este foro manda unas 40 consultas por segundo (hace tiempo que no lo miro) y si algunas tablas son InnoDB pero la mayoría son MyISAM. MyISAM lee mucho más rapido que InnoDB, con lo que convertir la tabla messages en InnoDB es un error.

SMF recomienda convertir algunas tablas a  InnoDB y otras no, dependiendo del uso o si son tablas que normalmnte se leen más que se escriben.

Aunque lo realmente importante será optimizar-tunear el my.cnf los parámetros típicos del mysql_cache, query buffer, etc, etc.

Ah! y hacer un buscador en MySQL usa Sphinx Search como el foro, es mucho más rápido.

Herramientas para Optimizar MySQL
http://foro.elhacker.net/tutoriales_documentacion/herramientas_para_optimizar_mysql-t214396.0.html

¡Adiós Locking Tables!
http://foro.elhacker.net/desarrollo_web/iexcladios_locking_tables-t157260.0.html

yo converti algunas tablas de mi db a innoDB por que se que las usare para insertar y ubdatear... ahora no quiero que se blokee toda esa tabla, si la  transaccion solo afecta a un unico registro. lo combeniente es blokear el registro