¿Qué es la base de datos MySql?
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto que utiliza el lenguaje de gestión de bases de datos más utilizado: el lenguaje de consulta estructurado (SQL) para la gestión de bases de datos.
MySQL es de código abierto, por lo que cualquiera puede descargarlo bajo la Licencia Pública General y modificarlo según sus necesidades personales.
MySQL ha llamado mucho la atención por su velocidad, fiabilidad y adaptabilidad. La mayoría de la gente está de acuerdo en que MySQL es la mejor opción para gestionar contenido sin procesamiento transaccional. Introducción a la base de datos:
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto. El sistema de base de datos MySQL utiliza el lenguaje de gestión de bases de datos más utilizado: el lenguaje de consulta estructurado (SQL) para la gestión de bases de datos.
Debido a que MySQL es de código abierto, cualquiera puede descargarlo bajo la Licencia Pública General y modificarlo según sus necesidades personalizadas. MySQL ha atraído mucha atención por su velocidad, confiabilidad y adaptabilidad. La mayoría de la gente está de acuerdo en que MySQL es la mejor opción para gestionar contenido sin procesamiento transaccional.
El origen del nombre MySQL no está muy claro. Una afirmación más influyente es que las guías básicas y una gran cantidad de bibliotecas y herramientas han tenido el prefijo "my" durante más de 10 años y, de todos modos, la hija de Monty Widenius, uno de los fundadores de MySQL AB, también se llama My. . Cuál de estos dos dio el nombre de MySQL sigue siendo un misterio, incluidos los desarrolladores.
El nombre del logo del delfín de MySQL es "sakila", que fue seleccionado por los fundadores de MySQL AB de una gran lista de nombres sugeridos por los usuarios en el concurso "Dolphin Naming". El nombre ganador fue proporcionado por Ambrose Twebaze, un desarrollador de software de código abierto de Suazilandia, África. Según Ambrose, Sakila proviene de un dialecto suazi llamado SiSwati y también es el nombre de una pequeña ciudad en Arusha, Tanzania, cerca de Uganda, la ciudad natal de Ambrose.
Puede que MySQL no sea muy potente, pero debido a su código abierto y su amplia difusión, muchas personas han conocido esta base de datos. Su historia también es legendaria. Historia de la base de datos MySQL:
La historia de MySQL se remonta a 1979. En ese momento, Oracle era solo una pequeña empresa y no había rastro del SQL Server de Microsoft. Había un hombre llamado Monty Widenius que trabajaba para una pequeña empresa llamada TcX y diseñó una herramienta de informes usando BASIC que podía ejecutarse en una computadora con una velocidad de reloj de 4 M y 16 KB de memoria. Poco después, esta herramienta se reescribió en lenguaje C y se transfirió a la plataforma Unix. En ese momento, era solo un motor de almacenamiento orientado a informes de muy bajo nivel. Esta herramienta se llama Unireg.
Sin embargo, esta pequeña empresa tiene recursos limitados y Monty es extremadamente talentoso. Frente a las desventajas de los recursos limitados, es capaz de liberar su potencial y siempre se esfuerza por escribir el código más eficiente. Y así se formó un hábito. Hay otros colegas que trabajan con Monty. Muy pocas personas pueden seguir escribiendo esos códigos 20 años después, pero Monty lo hizo.
En 1990, algunos de los clientes de TcX comenzaron a solicitar soporte SQL para su API. En ese momento, algunas personas pensaron en usar bases de datos comerciales directamente, pero Monty sintió que la velocidad de las bases de datos comerciales no era satisfactoria. Entonces, lo integró directamente en su propio motor de almacenamiento con la ayuda de código mSQL. Pero lamentablemente el efecto no es muy bueno. Como resultado, Monty se volvió ambicioso y decidió reescribir él mismo el soporte SQL.
En 1996, se lanzó MySQL 1.0, solo para un pequeño grupo de personas, lo que equivalía a un lanzamiento interno. En octubre de 1996, se lanzó MySQL 3.11.1, jaja, no existía la versión 2.x. Inicialmente, sólo se proporcionaban versiones binarias bajo Solaris. Un mes después, apareció una versión para Linux.
En los dos años siguientes, MySQL fue portado a varias plataformas. Cuando se lanzó, la política de licencias adoptada fue algo diferente: se permitía el uso comercial gratuito, pero MySQL no podía incluirse con sus propios productos para su lanzamiento. Si desea publicarlos juntos, debe utilizar una licencia especial, lo que significa gastar dinero. Por supuesto, el apoyo empresarial también cuesta dinero. Otros se pueden utilizar como quiera el usuario. Esta licencia especial aporta algunos ingresos a MySQL, sentando así una buena base para su desarrollo continuo. (Si lo piensas bien, PostgreSQL ha estado en un punto bajo durante varios años, lo que puede estar relacionado con que es completamente gratuito y sin restricciones).
MySQL3.22 debería ser una versión icónica, que proporcione soporte básico de SQL.
La base de datos relacional MySQL lanzó su primera versión en enero de 1998. Utiliza el mecanismo de subprocesos múltiples proporcionado por el núcleo del sistema para proporcionar un modo de ejecución de subprocesos múltiples completo y proporciona interfaces de programación (API) para lenguajes de programación como C, C, Eiffel, Java, Perl, PHP, Python. y Tcl, y admite múltiples tipos de campos. Y proporciona operadores completos para admitir operaciones SELECT y WHERE en consultas.
MySQL es de código abierto, por lo que cualquiera puede descargarlo bajo la Licencia Pública General y modificarlo según sus necesidades personales. MySQL ha atraído mucha atención por su velocidad, confiabilidad y adaptabilidad.
En 1999-2000, se fundó una empresa en Suecia llamada MySQL AB (AB significa "sociedad anónima" en sueco). Contraté a varias personas y cooperé con Sleepycat para desarrollar el motor Berkeley DB. Debido a que BDB admite el procesamiento de transacciones, MySQL comenzó a admitir el procesamiento de transacciones a partir de ese momento.
En abril de 2000, MySQL organizó el antiguo motor de almacenamiento y lo llamó MyISAM. Al mismo tiempo, en 2001, Heikiki Tuuri hizo una sugerencia a MySQL, con la esperanza de integrar su motor de almacenamiento InnoDB, que también admite el procesamiento de transacciones y el bloqueo a nivel de fila.
Hoy, desafortunadamente, tanto BDB como InnoDB parecen haber sido adquiridos por Oracle. Para eliminar competidores, incluso si son de código abierto, utilizarán cualquier medio.
La versión oficial combinada de MySQL e InnoDB es la 4.0.
Cuando llegó MySQL 5.0, en diciembre de 2003, comenzaron a introducirse cosas como Ver y procedimientos almacenados. Por supuesto, también hubo muchos errores durante este período.
El 16 de enero de 2008, MySQL fue adquirida por Sun.
Recientemente, el fundador de MySQL, Monty Widenius, presentó su renuncia a Sun. La cabeza se va.
Se dice que las empresas adquiridas por Sun tienen muy mala suerte. No sé cómo será el futuro de MySQL. Creo que la vitalidad de MySQL aún es muy larga.
Hoy en día, la combinación de mysql y php es absolutamente perfecta. Muchos sitios web grandes también usan la base de datos mysql. Las perspectivas de desarrollo de mysql son muy brillantes. Comandos comunes de MySQL:
1: ¡Uso! la instrucción SHOW para averiguar qué base de datos existe actualmente en el servidor:
mysqlgt; SHOW DATABASES
2: 2. Cree una base de datos MYSQLDATA
mysqlgt; CREAR BASE DE DATOS MYSQLDATA;
3: Seleccione la base de datos que creó
mysqlgt; USE MYSQLDATA (Cuando aparece la base de datos cambiada al presionar Enter, ¡la operación es exitosa!)
4: Verifique qué tablas existen en la base de datos actual
mysqlgt; MOSTRAR TABLAS;
5: Crear una tabla de base de datos
mysqlgt CREATE TABLE MYTABLE; ( nombre VARCHAR(20), sexo CHAR(1));
6: muestra la estructura de la tabla:
mysqlgt; DESCRIBE MYTABLE;
7 : Ir a la tabla Agregar registros en
mysqlgt; insertar valores en MYTABLE ("hyq", "M"); modo (por ejemplo, D:/mysql.txt)
mysqlgt; CARGAR DATOS LOCAL INFILE "D:/mysql.txt" EN LA TABLA MYTABLE;
9: Importar archivo .sql comando (por ejemplo, D:/mysql. sql)
mysqlgt; usar base de datos;
mysqlgt; fuente d:/mysql.sql;
10: Eliminar tabla
mysqlgt ;soltar TABLE MYTABLE;
11: Borrar la tabla
mysqlgt; eliminar de MYTABLE;
12: Actualizar los datos en la tabla
mysqlgt ;update MYTABLE set sex="f" donde name='hyq';
Explicación correspondiente de los permisos de administración global:
ARCHIVO: Leer y escribir archivos en el servidor MySQL.
PROCESO: Mostrar o eliminar hilos de servicio pertenecientes a otros usuarios.
RELOAD: Recargar listas de control de acceso, actualizar registros, etc.
SHUTDOWN: Cierra el servicio MySQL.
Permisos de base de datos/tabla de datos/columna de datos:
ALTERAR: modifica tablas de datos existentes (como agregar/eliminar columnas) e índices.
CREAR: Crea una nueva base de datos o tabla de datos.
BORRAR: Elimina registros de la tabla.
DROP: Elimina una tabla de datos o base de datos.
ÍNDICE: Crea o elimina un índice.
INSERT: Añade registros a la tabla.
SELECCIONAR: Mostrar/buscar los registros de la tabla.
ACTUALIZACIÓN: Modificar registros existentes en la tabla.
Permisos especiales:
TODOS: Permitido hacer cualquier cosa (igual que root).
USO: Sólo se permite iniciar sesión, no se permite nada más.
Método de importación de la base de datos MySQL:
Hay dos métodos para importar la base de datos MySQL:
1) Exportar primero el script SQL de la base de datos y luego importarlo;
2) Copie directamente directorios y archivos de bases de datos.
En diferentes sistemas operativos o versiones de MySQL, el método de copia directa de archivos puede ser incompatible.
Por lo tanto, generalmente se recomienda importar en forma de script SQL. Los dos métodos se presentan a continuación.
2. Método 1 Formato de script SQL
Los pasos son los siguientes:
2.1. Exportar script SQL
En la base de datos original. servidor, puede utilizar la herramienta phpMyAdmin o la línea de comando mysqldump para exportar el script SQL.
2.1.1 Utilice la herramienta phpMyAdmin
En las opciones de exportación, elija exportar "Estructura" y "Datos", y no agregue "DROP DATABASE" y "DROP TABLE". "opciones.
Seleccione la opción "Guardar como archivo". Si hay muchos datos, puede seleccionar la opción "gzip".
Guarde el archivo SQL exportado.
2.1.2 Usar la línea de comando mysqldump
Formato de comando
mysqldump -u nombre de usuario -p nombre de la base de datos gt; p>Ejemplo:
mysqldump -u root -p abc gt; abc.sql
(Exportar base de datos abc a archivo abc.sql)
Solicitar contraseña , ingrese la contraseña para el nombre de usuario de la base de datos.
2.2. Crear una base de datos vacía
Crear una base de datos a través de la interfaz/panel de control principal. Supongamos que el nombre de la base de datos es abc y el usuario completo de la base de datos es abc_f.
2.3. Importar y ejecutar scripts SQL
También existen dos métodos, uno es utilizar la herramienta phpMyAdmin (administración de bases de datos mysql), o la línea de comandos de mysql.
2.3.1 Utilice la herramienta phpMyAdmin
Desde el panel de control, seleccione la base de datos vacía creada, haga clic en "Administrar" para ingresar a la página de la herramienta de administración.
En el menú "SQL", busque y seleccione el archivo SQL que acaba de exportar y haga clic en "Ejecutar" para cargarlo y ejecutarlo.
Nota: phpMyAdmin tiene restricciones en el tamaño de los archivos cargados, y el propio PHP también tiene restricciones en el tamaño de los archivos cargados. Si el archivo SQL original
es relativamente grande, puede hacerlo. use gzip para comprimirlo primero. Para archivos de texto como archivos SQL, puede obtener una relación de compresión de 1:5 o superior.
Cómo usar gzip:
# gzip xxxxx.sql
Obtener
archivo xxxxx.sql.gz.
Cuando se le solicite una contraseña, ingrese la contraseña para el nombre de usuario de la base de datos.
3 Copia directa
Si la base de datos es relativamente grande, puede considerar utilizar el método de copia directa, pero diferentes versiones y sistemas operativos pueden ser incompatibles, así que utilícelo con precaución.
3.1 Preparar el archivo original
Empaquetarlo en un archivo con tar
3.2 Crear una base de datos vacía
3.3 Descomprimir
Extraer en el directorio temporal, como por ejemplo:
cd /tmp
tar zxf mydb.tar.gz
3.4 copiar
Copie el archivo de base de datos descomprimido al directorio correspondiente
cd mydb/
cp * /var/lib/mysql/mydb/
Para FreeBSD:
cp * /var/db/mysql/mydb/
3.5 Configuración de permisos
Cambie el propietario del archivo copiado a mysql: mysql y cambie el permisos para 660
chown mysql: mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*Método mssql para convertir mysql:
1. Estructura de la tabla guía
Utilice MySQL para generar un script de creación. Busque el script que desea exportar y modifíquelo de acuerdo con la sintaxis de MySQL para crear la estructura de columnas de la tabla en la base de datos MySQL.
2. Exportar datos de la tabla
Utilice bcp para exportar archivos de texto en el lado MSSQL:
bcp "Select * FROM dbname.dbo.tablename;" nombretabla.txt -c -Slocalhost\db2005 -Usa
Donde "" es la declaración SQL que se exportará, -c especifica el uso de \t para la separación de campos, use \n para la separación de registros, -S especifica el servidor de base de datos y Ejemplo, -U especifica el nombre de usuario, -P especifica la contraseña.
Utilice mysqlimport en el lado de MySQL para importar el archivo de texto a la tabla correspondiente
mysqlimport -uroot -p nombre de base de datos /home/test/ nombre de tabla.txt
Entre ellos -u especifica el nombre de usuario, -p especifica la contraseña, nombre de base de datos especifica el nombre de la base de datos y el nombre de la tabla es el mismo que el nombre del archivo. Copia de seguridad y recuperación de MySQL:
Datos de copia de seguridad y recuperación de MySQL Pasos generales
Ejemplo de copia de seguridad de una base de datos:
Tablas involucradas en el bloqueo de lectura. antes de la copia de seguridad
mysqlgt; LOCK TABLES tbl1 READ, tbl1 READ,…
Si usa la opción --lock-tables en la utilidad mysqldump, no necesita usar lo anterior. Declaración SQL.
2. Exportar la estructura y los datos de las tablas en la base de datos
shellgt; mysqldump --opt db_namegt; db_name.sql
3. registro de actualización
shellgt; mysqladmin flush-logs
Esto puede registrar los cambios de datos después de la copia de seguridad y prepararse para la recuperación de datos.
4. Desbloquee el bloqueo de lectura en la tabla
mysqlgt;UNLOCK TABLES;
Para acelerar el proceso anterior, puede hacer esto:
shellgt; mysqldump --lock-tables --opt db_namegt; db_name.sql; mysqladmin flush-logs
Pero esto puede causar algunos problemas menores.
El comando anterior restaura el bloqueo de lectura en la tabla antes de habilitar el nuevo registro de actualización.
En un sitio que está ocupado con actualizaciones, es posible que haya datos actualizados después de la copia de seguridad que no se registren en el nuevo registro.
Ahora restaure la base de datos respaldada arriba
1. Utilice bloqueos de escritura en las tablas involucradas
mysqlgt; LOCK TABLES tbl1 WRITE, tbl1 WRITE,...
2. Restaurar los datos respaldados
shellgt; mysql db_name lt; db_name.sql
3.
shellgt; mysql --one-database db_name lt; hostname.nnn
Supongamos que el nombre de registro que se utilizará es hostname.nnn
4.
shellgt ;mysqladmin flush-logs
5. Desbloquear el bloqueo de escritura en la tabla
mysqlgt;UNLOCK TABLES;
Espero El ejemplo anterior puede inspirarlo, porque hacer una copia de seguridad de los datos Hay varios métodos y los que utilice pueden ser muy diferentes de los mencionados anteriormente, pero para la copia de seguridad y la recuperación, el tiempo para bloquear la tabla y habilitar nuevos registros de actualización debe ser similar, por lo que Considere esta cuestión detenidamente. Optimización de la base de datos MySQL:
Elija InnoDB como motor de almacenamiento
Las bases de datos de productos a gran escala tienen mayores requisitos de confiabilidad y concurrencia. Como motor de almacenamiento MySQL predeterminado, InnoDB es mejor que MyISAM. Dijo que era una mejor elección.
Optimizar la estructura de la base de datos
Organizar el esquema, las tablas y los campos de la base de datos para reducir la sobrecarga de E/S, guardar elementos relacionados juntos y planificar con anticipación para que, a medida que aumente la cantidad de Los datos aumentan el crecimiento y el rendimiento puede mantenerse en un nivel alto.
La tabla de datos debe diseñarse para minimizar el espacio que ocupa y la clave principal de la tabla debe ser lo más corta posible. ·Para las tablas InnoDB, la columna donde se encuentra la clave primaria es replicable en cada entrada del índice secundario, por lo que si hay muchos índices secundarios, una clave primaria corta puede ahorrar mucho espacio.
Cree solo los índices que necesita para mejorar el rendimiento de las consultas. Los índices facilitan la recuperación, pero aumentan el tiempo de ejecución de las operaciones de inserción y actualización.
Función ChangeBuffering de InnoDB
InnoDB proporciona una configuración de cambio en búfer para reducir la E/S del disco necesaria para mantener índices auxiliares. Las bases de datos de gran escala pueden experimentar una gran cantidad de operaciones de tablas y E/S intensas para mantener actualizados los índices secundarios. Cuando la página relevante no está en el grupo de búfer, el búfer de cambios de InnoDB almacenará en caché los cambios en la entrada del índice secundario, evitando así operaciones de E/S que consumen mucho tiempo causadas por no poder leer la página desde el disco inmediatamente. Cuando las páginas se cargan en el grupo de búfer, los cambios almacenados en el búfer se fusionan y las páginas actualizadas se descargan posteriormente en el disco. Al hacerlo, se mejora el rendimiento y está disponible para MySQL 5.5 y superiores.
Compresión de páginas InnoDB
InnoDB admite la compresión de tablas a nivel de página. Cuando se escribe una página de datos, se utiliza un algoritmo de compresión específico para comprimirla. Los datos comprimidos se escriben en el disco con un mecanismo de perforación que libera bloques vacíos al final de la página. Si la compresión falla, los datos se escriben sin cambios. Las tablas y los índices se comprimen porque los índices normalmente representan una gran proporción del tamaño total de la base de datos. La compresión puede ahorrar significativamente memoria, E/S o tiempo de procesamiento, logrando así el propósito de mejorar el rendimiento y la escalabilidad. También reduce la cantidad de datos transferidos entre la memoria y el disco. MySQL5.1 y versiones posteriores admiten esta función.
Tenga en cuenta que la compresión de páginas no admite tablas en espacios de tablas compartidos. Los espacios de tablas compartidos incluyen espacios de tablas del sistema, espacios de tablas temporales y espacios de tablas regulares.
Utilizar la importación de datos por lotes
El uso de una fuente de datos ordenada en la clave principal para importar datos por lotes puede acelerar el proceso de inserción de datos. De lo contrario, es posible que sea necesario insertar filas entre otras filas para mantener el orden, lo que puede provocar una alta E/S del disco, afectar el rendimiento y aumentar las divisiones de páginas. También es beneficioso desactivar el modo de confirmación automática, ya que realizará un vaciado del registro en el disco para cada inserción. Cambiar temporalmente las comprobaciones de clave única y clave externa durante las inserciones masivas también puede reducir significativamente la E/S del disco. Para tablas recién creadas, la mejor práctica es crear restricciones de clave externa/clave única después de la importación masiva.
Una vez que sus datos alcancen un tamaño estable, o una tabla en crecimiento agregue decenas o cientos de megabytes, debería considerar usar la instrucción OPTIMIZETABLE para reorganizar la tabla y comprimir el espacio desperdiciado. Un escaneo completo de la tabla reorganizada requerirá menos E/S.
Optimizar la E/S del disco InnoDB
Aumentar el tamaño del grupo de búfer de InnoDB permite acceder a las consultas desde el grupo de búfer en lugar de a través de la E/S del disco. Ajuste el indicador de limpieza del búfer para lograr el nivel óptimo ajustando la variable del sistema innodb_flush_method.
Asignación de memoria MySQL
Antes de asignar suficiente memoria para MySQL, considere los requisitos de memoria para MySQL en diferentes áreas. Las áreas clave a considerar son: Conexiones simultáneas: con una gran cantidad de conexiones simultáneas, la clasificación y las tablas temporales requerirán mucha memoria. En el momento de escribir este artículo, de 16 GB a 32 GB de RAM son suficientes para una base de datos que maneje 3000 conexiones simultáneas.
La fragmentación de la memoria puede consumir aproximadamente 10 o más bloques de memoria. Los cachés y buffers como innodb_buffer_pool_size, key_buffer_size, query_cache_size, etc. consumen aproximadamente el 80% de la memoria asignada.
Mantenimiento diario
Revise periódicamente los registros de consultas lentas y optimice el mecanismo de consulta para utilizar eficazmente la memoria caché y reducir la E/S del disco. Optimícelos para escanear la cantidad mínima de filas en lugar de realizar un escaneo completo de la tabla.
Otros registros que pueden ayudar al DBA a verificar y analizar el rendimiento incluyen: registros de errores, registros de consultas generales, registros binarios y registros DDL (registros de metadatos).
Vacia periódicamente las cachés y los buffers para reducir la fragmentación. Utilice la instrucción OPTIMIZETABLE para reorganizar la tabla y comprimir cualquier espacio potencialmente desperdiciado. ?