La diferencia entre Mysql InnoDB y MyISAM
MyIASM es una nueva versión de la tabla IASM con las siguientes extensiones:
Portabilidad a nivel binario.
Índice de columna vacía.
Las filas de longitud variable están menos fragmentadas que las tablas ISAM.
Soporta archivos de gran tamaño.
Mejor compresión de índices.
Mejor distribución de claves y estadísticas.
Procesamiento de incremento automático mejor y más rápido.
Los siguientes son algunos detalles y diferencias específicas de la implementación:
1. InnoDB no admite índices de tipo FULLTEXT.
2.InnoDB no guarda el número exacto de filas en la tabla. Es decir, al ejecutar select count(*) from table, InnoDB necesita escanear toda la tabla para calcular cuántas filas hay. son, mientras que MyISAM solo lee el número de filas guardadas. Tenga en cuenta que cuando la instrucción count(*) contiene una condición donde, la operación es la misma para ambas tablas.
3. Para campos de tipo AUTO_INCREMENT, InnoDB solo debe contener un índice para el campo, pero en las tablas MyISAM, se pueden crear índices conjuntos para otros campos.
4. Al ELIMINAR DE una tabla, InnoDB no volverá a crear la tabla, sino que la eliminará fila por fila.
5. La operación LOAD TABLE FROM MASTER no funciona para InnoDB. La solución es cambiar primero la tabla InnoDB a una tabla MyISAM y luego cambiarla a una tabla InnoDB después de importar los datos, pero. utilizará características adicionales de InnoDB (como claves externas) no funcionan para tablas.
Además, el bloqueo de filas en la tabla InnoDB no es absoluto. Si MySQL no está seguro del rango a escanear al ejecutar la instrucción SQL, la tabla InnoDB también bloqueará toda la tabla, como la actualización. table set num=1 donde el nombre es como "aaa"
Ninguna tabla puede satisfacer perfectamente todas las necesidades. Siempre que utilice el tipo correcto de tabla para el tipo de negocio correcto, puede maximizar las ventajas de rendimiento de MySQL. .
Prueba sencilla el rendimiento del motor MyISAM y el motor InnoDB en MySQL
[Configuración de hardware]
CPU: AMD2500 (1.8G)
Memoria: 1G/moderna
Disco duro: 80G/IDE
[Configuración de software]
Sistema operativo Windows XP SP2
. SE: PHP5.2.1
DB: MySQL5.0.37
Web: IIS6
[Estructura de tabla MySQL]
Crear tabla `myisam ` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) default NULL,
`content` text,
p>
CLAVE PRIMARIA (`id`)
)ENGINE=MyISAM DEFAULT CHARSET=gbk;
CREAR TABLA `innodb` (
`id ` int(11) NOT NULL auto_increment,
`name` varchar(100) default NULL,
texto `content`,
CLAVE PRIMARIA (`id `)
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
[Contenido de datos]
$name="heiyeluren";
$content="MySQL admite múltiples motores de almacenamiento como procesadores para diferentes tipos de tablas. El motor de almacenamiento MySQL incluye motores que manejan tablas seguras para transacciones y motores que manejan tablas que no son seguras para transacciones: - MyISAM administra tablas no seguras para transacciones tablas de transacciones MyISAM es compatible con todas las configuraciones de MySQL y es el motor de almacenamiento predeterminado a menos que MySQL esté configurado para usar otro motor de forma predeterminada. El motor de almacenamiento MEMORY proporciona tablas "en memoria" Al igual que MyISAM, los motores de almacenamiento MEMORY y MERGE lo permiten. Las colecciones se procesarán como una sola tabla. El motor de almacenamiento MERGE maneja tablas no transaccionales, y ambos motores están incluidos en MySQL de forma predeterminada (Nota: el motor de almacenamiento MEMORY se conoce formalmente como motor HEAP). El almacenamiento InnoDB y BDB. Los motores proporcionan tablas seguras para transacciones. BDB se incluye en los sistemas operativos que lo admiten en la distribución binaria MySQL-Max. InnoDB también se incluye de forma predeterminada en todas las distribuciones binarias de MySQL 5.1, y puede configurar MySQL para permitir o deshabilitar cualquiera de los motores según sus preferencias. -El motor de almacenamiento EJEMPLO es un motor "stub" y no hace nada. Puede crear tablas con este motor, pero no se almacenarán ni recuperarán datos de él. Este motor pretende ser un ejemplo en el código fuente de MySQL para demostrar cómo empezar a escribir un nuevo motor de almacenamiento. Asimismo, los desarrolladores son el foco principal de este motor.
"
[Insertar datos-1] (innodb_flush_log_at_trx_commit=1)
MyISAM 1W: 3/s
InnoDB 1W: 219/s
MyISAM 10W: 29/s
InnoDB 10W: 2092/s
MyISAM 100W: 287/s
InnoDB 100W: No me atrevo a probar p >
[Insertar datos-2] (innodb_flush_log_at_trx_commit=0)
MyISAM 1W: 3/s
InnoDB 1W: 3/s
MyISAM 10W: 30/s
InnoDB 10W: 29/s
MyISAM 100W: 273/s
InnoDB 100W: 423/s
[Insertar datos 3] (innodb_buffer_ pool_size=1024M)
InnoDB 1W: 3/s
InnoDB 10W: 33/s
InnoDB 100W: 607/ s
[Insertar datos 4] (innodb_buffer_pool_size=256M, innodb_flush_log_at_trx_commit=1, establecer autocommit=0)
InnoDB 1W: 3/s
InnoDB 10W: 26/s
InnoDB 100W: 379/s
[archivo de configuración MySQL] (configuración predeterminada)
# archivo de configuración de instancia del servidor MySQL
[Cliente]
puerto=3306
[mysql]
conjunto de caracteres predeterminado=gbk
[ mysqld]
puerto=3306
basedir="C:/mysql50/"
datadir="C:/mysql50/Data/"
conjunto de caracteres predeterminado=gbk
motor de almacenamiento predeterminado=INNODB
sql-mode="STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"
max_connections =100
query_cache_size=0
table_cache=256
tmp_table_size=50M
thread_cache_size=8
myisam_max_sort_file_size =100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=100M
key_buffer_size=82M
read_buffer_size=64K