Charla general sobre MySQL (3)

 3. Análisis de intercepción de consultas

1- Optimización de consultas

①Reloj pequeño impulsa reloj grande

El proceso habitual de ajuste de SQL: (Pregunta de la entrevista: ¿Cómo suele optimizar SQL?)

  1. Observe, ejecute durante al menos 1 día para ver la situación de SQL lento en producción.
  2. Encienda el registro de consultas lentas, establezca el umbral, por ejemplo, si supera los 5 segundos, es un SQL lento y agárrelo. (Descubre SQL lento)
  3. explicar + análisis SQL lento.
  4. mostrar perfil.
  5. Gerente de operación y mantenimiento o DBA, para afinar los parámetros del servidor de base de datos SQL.

Resumir:

  1. Habilite y capture consultas lentas
  2. explicar + análisis SQL lento
  3. show profile Consulta los detalles de ejecución y el ciclo de vida de SQL en el servidor Mysql
  4. Ajuste de parámetros del servidor de base de datos SQL.

Principio de optimización: las tablas pequeñas controlan tablas grandes, es decir, los conjuntos de datos pequeños controlan conjuntos de datos grandes.

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-java"><span style="color:#0000ff">for</span>(<span style="color:#a31515">int</span> i=<span style="color:#880000">0</span>;i<<span style="color:#880000">5</span>;i++){
    <span style="color:#0000ff">for</span>(<span style="color:#a31515">int</span> j=<span style="color:#880000">0</span>;j<<span style="color:#880000">1000</span>;j++){
        ...
    }
}
====================
<span style="color:#0000ff">for</span>(<span style="color:#a31515">int</span> i=<span style="color:#880000">0</span>;i<<span style="color:#880000">1000</span>;i++){
    <span style="color:#0000ff">for</span>(<span style="color:#a31515">int</span> j=<span style="color:#880000">0</span>;j<<span style="color:#880000">5</span>;j++){
        ...
    }
}
</code></span></span>

Similar a los dos bucles for anteriores, intente elegir el de arriba. La parte de la base de datos que consume más tiempo es el establecimiento de relaciones entre varias tablas . El primer tipo: equivalente a establecer 5 conexiones entre dos tablas; el segundo tipo: equivalente a establecer 1000 conexiones entre dos tablas. Es decir, lo que se anida dentro debe ser una mesita! (Debido a que el anidado se ejecuta primero, es equivalente a que el SQL anidado sea el bucle for externo)

Principio de RBO

Cuando el conjunto de datos de la tabla B es más pequeño que el conjunto de datos de la tabla A, usar in es mejor de lo que existe.

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> A <span style="color:#0000ff">where</span> id <span style="color:#0000ff">in</span> (<span style="color:#0000ff">select</span> id <span style="color:#0000ff">from</span> B)
等价于:
<span style="color:#0000ff">for</span> <span style="color:#0000ff">select</span> id <span style="color:#0000ff">from</span> B
<span style="color:#0000ff">for</span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> A <span style="color:#0000ff">where</span> A.id <span style="color:#ab5656">=</span> B.id
</code></span></span>

Cuando el conjunto de datos de la tabla B es más grande que el de la tabla A, es mejor usar "existe" que "in".

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> A <span style="color:#0000ff">where</span> <span style="color:#0000ff">exists</span> (<span style="color:#0000ff">select</span> <span style="color:#880000">1</span> <span style="color:#0000ff">from</span> B <span style="color:#0000ff">where</span> B.id <span style="color:#ab5656">=</span> A.id)
等价于:
先:<span style="color:#0000ff">for</span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> A  
后:<span style="color:#0000ff">for</span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> B <span style="color:#0000ff">where</span> B.id <span style="color:#ab5656">=</span> A.id
</code></span></span>

Nota: Los campos de ID de la tabla A y la tabla B deben estar indexados.

EXISTE palabra clave
<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">SELECT</span> ...<span style="color:#0000ff">FROM</span> <span style="color:#0000ff">table</span> <span style="color:#0000ff">WHERE</span> <span style="color:#0000ff">EXISTS</span> (subquery)
</code></span></span>

Esta sintaxis se puede entender como: primero coloque los datos de la consulta principal en la subconsulta para la verificación condicional y determine si el resultado de los datos de la consulta principal se puede retener de acuerdo con el resultado de la verificación (VERDADERO o FALSO).

pista

  1. EXSTS (subconsulta) solo devuelve VERDADERO o FALSO , por lo que SELECT * en la subconsulta también puede ser SELECT 1 o seleccionar 'X'. La declaración oficial es que la lista SELECT se ignorará durante la ejecución real, por lo que no hay diferencia.
  2. Es posible que se haya optimizado el proceso de ejecución real de la subconsulta EXISTS en lugar de una comparación uno por uno. Si le preocupan los problemas de eficiencia, puede realizar una prueba real para determinar si hay un problema de eficiencia.
  3. La subconsulta EXISTS a menudo se puede reemplazar por expresiones condicionales, otras subconsultas o JOIN. Cuál es la mejor requiere un análisis específico de problemas específicos

②en和existe

Tabla de ejemplo:

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tbl_emp;
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> NAME <span style="color:#ab5656">|</span> deptId <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> z3   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> z4   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> z5   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> w5   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> w6   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> s7   <span style="color:#ab5656">|</span>      <span style="color:#880000">3</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> s8   <span style="color:#ab5656">|</span>      <span style="color:#880000">4</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">8</span> <span style="color:#ab5656">|</span> s9   <span style="color:#ab5656">|</span>     <span style="color:#880000">51</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#880000">8</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.02</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tbl_dept;
<span style="color:#ab5656">+</span><span style="color:#008000">----+----------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> deptName <span style="color:#ab5656">|</span> locAdd <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+----------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> RD       <span style="color:#ab5656">|</span> <span style="color:#880000">11</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> HR       <span style="color:#ab5656">|</span> <span style="color:#880000">12</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> MK       <span style="color:#ab5656">|</span> <span style="color:#880000">13</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> MIS      <span style="color:#ab5656">|</span> <span style="color:#880000">14</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> FD       <span style="color:#ab5656">|</span> <span style="color:#880000">15</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+----------+--------+</span>
<span style="color:#880000">5</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.01</span> sec)
</code></span></span>

en y existe uso

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tbl_emp e <span style="color:#0000ff">where</span> e.deptId <span style="color:#0000ff">in</span> (<span style="color:#0000ff">select</span> id <span style="color:#0000ff">from</span> tbl_dept d);
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> NAME <span style="color:#ab5656">|</span> deptId <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> z3   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> z4   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> z5   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> w5   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> w6   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> s7   <span style="color:#ab5656">|</span>      <span style="color:#880000">3</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> s8   <span style="color:#ab5656">|</span>      <span style="color:#880000">4</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#880000">7</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tbl_emp e <span style="color:#0000ff">where</span> <span style="color:#0000ff">exists</span> (<span style="color:#0000ff">select</span> <span style="color:#880000">1</span> <span style="color:#0000ff">from</span> tbl_dept d <span style="color:#0000ff">where</span> d.id <span style="color:#ab5656">=</span> e.deptId);
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> NAME <span style="color:#ab5656">|</span> deptId <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> z3   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> z4   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> z5   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> w5   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> w6   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> s7   <span style="color:#ab5656">|</span>      <span style="color:#880000">3</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> s8   <span style="color:#ab5656">|</span>      <span style="color:#880000">4</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#880000">7</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)
#<span style="color:#a31515">'X'</span>就是表示一个常量,是一个常量就行了,反正返回的就是<span style="color:#a31515">true</span><span style="color:#ab5656">/</span><span style="color:#a31515">false</span>
mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tbl_emp e <span style="color:#0000ff">where</span> <span style="color:#0000ff">exists</span> (<span style="color:#0000ff">select</span> <span style="color:#a31515">'X'</span> <span style="color:#0000ff">from</span> tbl_dept d <span style="color:#0000ff">where</span> d.id <span style="color:#ab5656">=</span> e.deptId);
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> NAME <span style="color:#ab5656">|</span> deptId <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> z3   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> z4   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> z5   <span style="color:#ab5656">|</span>      <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> w5   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> w6   <span style="color:#ab5656">|</span>      <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> s7   <span style="color:#ab5656">|</span>      <span style="color:#880000">3</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> s8   <span style="color:#ab5656">|</span>      <span style="color:#880000">4</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+------+--------+</span>
<span style="color:#880000">7</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)
</code></span></span>

③ Utilice la optimización del índice OrderBy para ordenar

Para la cláusula ORDER BY, intente usar el método Index para ordenar y evite usar el método FileSort para ordenar.

SQL nuevo

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">create</span> <span style="color:#0000ff">table</span> tblA(
    #id <span style="color:#a31515">int</span> <span style="color:#0000ff">primary</span> key <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> auto_increment,
    age <span style="color:#a31515">int</span>,
    birth <span style="color:#a31515">timestamp</span> <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span>
);

<span style="color:#0000ff">insert</span> <span style="color:#0000ff">into</span> tblA(age, birth) <span style="color:#0000ff">values</span>(<span style="color:#880000">22</span>, now());
<span style="color:#0000ff">insert</span> <span style="color:#0000ff">into</span> tblA(age, birth) <span style="color:#0000ff">values</span>(<span style="color:#880000">23</span>, now());
<span style="color:#0000ff">insert</span> <span style="color:#0000ff">into</span> tblA(age, birth) <span style="color:#0000ff">values</span>(<span style="color:#880000">24</span>, now());

<span style="color:#0000ff">create</span> index idx_A_ageBirth <span style="color:#0000ff">on</span> tblA(age, birth);
</code></span></span>

Ver verificación:

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> tblA;
<span style="color:#ab5656">+</span><span style="color:#008000">------+---------------------+</span>
<span style="color:#ab5656">|</span> age  <span style="color:#ab5656">|</span> birth               <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">------+---------------------+</span>
<span style="color:#ab5656">|</span>   <span style="color:#880000">22</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-04</span> <span style="color:#880000">19</span>:<span style="color:#880000">31</span>:<span style="color:#880000">45</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>   <span style="color:#880000">23</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-04</span> <span style="color:#880000">19</span>:<span style="color:#880000">31</span>:<span style="color:#880000">45</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>   <span style="color:#880000">24</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-04</span> <span style="color:#880000">19</span>:<span style="color:#880000">31</span>:<span style="color:#880000">45</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">------+---------------------+</span>
<span style="color:#880000">3</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> index <span style="color:#0000ff">from</span> tblA;
</code></span></span>

El punto clave de analizar SQL  es si se generará UsingFileSort :

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">where</span> age <span style="color:#ab5656">></span> <span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> age;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">where</span> age<span style="color:#ab5656">></span><span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> age,birth;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">where</span> age<span style="color:#ab5656">></span><span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> birth;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">where</span> age<span style="color:#ab5656">></span><span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> birth,age;
</code></span></span>

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> birth;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">WHERE</span> birth <span style="color:#ab5656">></span> <span style="color:#a31515">'2016-01-28 00:00:00'</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> birth;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">WHERE</span> birth <span style="color:#ab5656">></span> <span style="color:#a31515">'2016-01-28 00:00:00'</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> age;

mysql<span style="color:#ab5656">></span> EXPLAIN <span style="color:#0000ff">SELECT</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">FROM</span> tblA <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> age, birth <span style="color:#0000ff">desc</span>;
</code></span></span>

El último caso: aunque el orden de orden por es coherente con el orden de creación de índices, dado que el orden predeterminado es ascendente y DESC es descendente, el orden predeterminado de creación de índices de MySQL es ascendente y ahora se necesita un orden descendente. que ya no está disponible, MySQL solo genera una ordenación interna una vez.

MySQL admite dos tipos de clasificación, FileSort e lIndex, e Index es eficiente, lo que significa que MySQL escanea el índice para completar la clasificación. El método FileSort es menos eficiente.

Conclusión: ORDER BY cumple dos condiciones y utilizará el método Index para ordenar:

  1. La instrucción ORDER BY utiliza la columna frontal más a la izquierda del índice.
  2. Utilice la combinación de la cláusula where y la columna condicional de la cláusula Order BY para satisfacer la columna frontal más a la izquierda del índice.

④ Clasificación de archivos de MySQL

Si la columna de Ordenar por consulta no está en la columna de índice, Filesort de MySQL tiene dos algoritmos:

1) clasificación bidireccional

Antes de MySQL 4.1, se usaba la clasificación bidireccional, lo que literalmente significa escanear el disco dos veces , finalmente obtener los datos, leer el puntero de fila y la columna Ordenar por, ordenarlos, luego escanear la lista ordenada y reordenar de la lista de acuerdo con los valores en la lista Lea la salida de datos correspondiente en la lista.

Obtenga el campo de clasificación del disco, ordénelo en el búfer y luego obtenga otros campos del disco.

Para obtener un lote de datos, el disco debe escanearse dos veces. Como todos sabemos, I\O consume mucho tiempo, por lo que después de mysql4.1, apareció un segundo algoritmo mejorado, que es una clasificación unidireccional.

2) Clasificación unidireccional

Lea todas las columnas requeridas por la consulta del disco, clasifíquelas en el búfer según el orden por columna y luego escanee la lista ordenada para obtener resultados. Es más eficiente y evita leer datos por segunda vez. Y convierta IO aleatorio en IO secuencial, pero usará más espacio porque guarda cada fila en la memoria.

Conclusión y preguntas planteadas

  • Dado que las salidas de un solo carril al final, generalmente son mejores que las de dos carriles.

  • Pero hay un problema con un solo canal.

En sort_buffer (el tamaño del búfer se configura en my.cnf), el método B ocupa mucho más espacio que el método A, porque el método B elimina todos los campos , por lo que el tamaño total de los datos que se pueden eliminar excede el tamaño de sort_buffer Capacity, de modo que solo los datos con la capacidad de sort_buffer se puedan recuperar cada vez para ordenar (crear archivos tmp, fusionar varias vías) y recuperar después de ordenar

El tamaño de la capacidad de sort_buffer, y luego organizar... así múltiples E/S. ( al igual que el tamaño del búfer no es suficiente, solo se puede recuperar varias veces )

Originalmente quería guardar una operación de E/S, pero resultó en una gran cantidad de operaciones de E/S, lo que no valió la pena.

⑤Estrategia de optimización

  • Aumente la configuración del parámetro sort_buffer_size
  • Aumente la configuración del parámetro max_length_for_sort_data

¿Por qué la configuración de los parámetros sort_buffer_size y max_length_for_sort_data puede optimizar la clasificación?

Mejorar la velocidad de Ordenar por:

  1. Al ordenar por, seleccionar * es un campo tabú que solo requiere Query, lo cual es muy importante (es fácil llenar el búfer ). Los efectos aquí son;

    • Cuando la suma de los tamaños de campo de la consulta es menor que max_length_for_sort_data y el campo de clasificación no es de tipo TEXT|BLOB, se utilizará el algoritmo mejorado: clasificación unidireccional; de lo contrario, se utilizará el algoritmo antiguo: clasificación multidireccional. .

    • Los datos de ambos algoritmos pueden exceder la capacidad de sort_buffer. Después de exceder, se creará un archivo tmp temporal para fusionar y clasificar , lo que resultará en múltiples IO. Sin embargo, el riesgo de usar un algoritmo de clasificación unidireccional será mayor, por lo que sort_buffer__size debe aumentarse.

  2. Intente aumentar sort_buffer_size. No importa qué algoritmo se utilice, aumentar este parámetro mejorará la eficiencia. Por supuesto, debe aumentarse de acuerdo con las capacidades del sistema, ya que este parámetro es específico para cada proceso.

  3. Intente aumentar max_length_for_sort_data; aumentar este parámetro aumentará la probabilidad de usar el algoritmo mejorado. Pero si se establece demasiado alto, aumenta la probabilidad de que la capacidad total de datos exceda sort_buffer_size, y los síntomas obvios son alta actividad de E/S del disco y bajo uso del procesador.

⑥Índice y orden por resumen

usar el índice para ordenar

  • MySql dos métodos de clasificación: clasificación de archivos o clasificación de índices ordenados por escaneo
  • MySql puede usar el mismo índice para ordenar y consultar

Crear un índice compuesto a_b_c (a, b, c)

order by puede usar el prefijo más a la izquierda del índice

  • PEDIDO POR un
  • ORDEN POR a, b
  • ORDENAR POR a, b, c
  • ORDEN POR a DESC, b DESC, c DESC ( tanto ascendente como descendente )

Si WHERE se define como una constante usando el prefijo más a la izquierda del índice principal, entonces order by puede usar el índice ( no genera FileSort )

  • DONDE a = const ORDEN POR b,c
  • DONDE a = const AND b = const ORDENAR POR c
  • DONDE a = const ORDEN POR b, c
  • DONDE a = const Y b > const ORDENAR POR b, c  aquí es > pero sigue siendo una constante

no se puede usar el índice para ordenar

  • ORDENAR POR a ASC, b DESC, c DESC // la clasificación es inconsistente
  • WHERE g = const ORDER BY b, c // produce un índice perdido
  • WHERE a = const ORDER BY c // El hermano del medio se rompe  y pierde el índice b
  • DONDE a = const ORDEN POR a, d //d no es parte de primo
  • WHERE a in (...) ORDER BY b, c // Para ordenar, las condiciones de igualdad múltiple también son consultas de rango no son constantes

Optimización de 2 grupos por

Optimización GroupBy

  • La esencia de agrupar por es ordenar primero y luego agrupar , y seguir el mejor prefijo izquierdo construido por el índice.
  • Cuando no se puede usar la columna de índice, aumente la configuración del parámetro max_length_for_sort_data + aumente la configuración del parámetro sort_buffer_size.
  • Donde es mayor que tener, y las condiciones que se pueden escribir en donde no están restringidas por tener.

3- Registro de consultas lentas

  • El registro de consultas lentas de MySQL es un registro de registro proporcionado por MySQL. Se utiliza para registrar declaraciones cuyo tiempo de respuesta excede el umbral en MySQL. Específicamente, SQL cuyo tiempo de ejecución excede el valor de long_query_time se registrará en el registro de consultas lentas.
  • Específicamente, SQL cuyo tiempo de ejecución exceda el valor de long_query_time se registrará en el registro de consultas lentas. El valor predeterminado de long_query_time es 10, lo que significa ejecutar la instrucción durante más de 10 segundos.
  • Permítale verificar qué SQL supera nuestro valor de tiempo de tolerancia máximo. Por ejemplo, si un SQL se ejecuta durante más de 5 segundos, lo consideraremos como SQL lento. Esperamos recopilar SQL de más de 5 segundos y realizar un análisis exhaustivo en combinación con lo anterior explica.

①Cómo operar

De forma predeterminada, la base de datos MySQL no habilita la velocidad diaria de consulta lenta, y debemos configurar manualmente este parámetro .

Por supuesto, si no es necesario para el ajuste, generalmente no se recomienda habilitar este parámetro, ya que habilitar el registro de consultas lentas provocará más o menos ciertos impactos en el rendimiento. El registro de consultas lentas admite la escritura de registros en archivos.

1) Compruebe si está habilitado y cómo habilitarlo
  • 默认 - MOSTRAR VARIABLES COMO '%slow_query_log%';
  • Abierto una sola vez: establezca global slow_query_log=1; solo es efectivo para la base de datos actual, si MySQL se reinicia, no será válido . Válido solo por este tiempo.
<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SHOW</span> VARIABLES <span style="color:#0000ff">LIKE</span> <span style="color:#a31515">'%slow_query_log%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#ab5656">|</span> Variable_name       <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>                    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#ab5656">|</span> slow_query_log      <span style="color:#ab5656">|</span> OFF                      <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> slow_query_log_file <span style="color:#ab5656">|</span> localhost<span style="color:#ab5656">-</span>slow.log       <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#880000">2</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">set</span> <span style="color:#0000ff">global</span> slow_query_log<span style="color:#ab5656">=</span><span style="color:#880000">1</span>;
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.01</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SHOW</span> VARIABLES <span style="color:#0000ff">LIKE</span> <span style="color:#a31515">'%slow_query_log%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#ab5656">|</span> Variable_name       <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>                    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#ab5656">|</span> slow_query_log      <span style="color:#ab5656">|</span> <span style="color:#0000ff">ON</span>                       <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> slow_query_log_file <span style="color:#ab5656">|</span> localhost<span style="color:#ab5656">-</span>slow.log       <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------+--------------------------+</span>
<span style="color:#880000">2</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>

Si desea que tenga efecto de forma permanente, debe modificar el archivo de configuración my.cnf (lo mismo ocurre con otras variables del sistema)

Modifique el archivo my.cnf, agregue o modifique los parámetros slow_query_log y slow_query_log_file en [mysqld] y luego reinicie el servidor MySQL. También configure las siguientes dos líneas en el archivo my.cnf

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">slow_query_log <span style="color:#ab5656">=</span><span style="color:#880000">1</span>slow_query_log_file<span style="color:#ab5656">=</span><span style="color:#ab5656">/</span>var<span style="color:#ab5656">/</span>lib<span style="color:#ab5656">/</span>mycoderxz<span style="color:#ab5656">-</span>slow.log
</code></span></span>

Con respecto al parámetro slow_query_log_file de la consulta lenta, especifica la ruta de almacenamiento del archivo de registro de consultas lentas, y el sistema tiene como valor predeterminado un archivo predeterminado host_name-slow.log (si no se especifica el parámetro slow_query_log_file)

2) Activar el registro de consultas lentas

¿Qué tipo de SQL se registrará en el registro de consultas lentas?

Esto está controlado por el parámetro long_query_time.Por defecto, el valor de long_query_time es de 10 segundos.Comando : SHOW VARIABLES LIKE 'long_query_time%';

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SHOW</span> VARIABLES <span style="color:#0000ff">LIKE</span> <span style="color:#a31515">'long_query_time%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> Variable_name   <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> long_query_time <span style="color:#ab5656">|</span> <span style="color:#880000">10.000000</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>

Puede usar comandos para modificarlo, o puede modificarlo en el parámetro my.cnf.

Si el tiempo de ejecución es exactamente igual a long_query_time, no se registrará . En otras palabras, en el código fuente de mysql, se considera que es mayor que long_query_time, no mayor ni igual que.

3) Establezca el tiempo de umbral de SQL lento:

establecer long_query_time global = 3;

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SHOW</span> VARIABLES <span style="color:#0000ff">LIKE</span> <span style="color:#a31515">'long_query_time%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> Variable_name   <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> long_query_time <span style="color:#ab5656">|</span> <span style="color:#880000">10.000000</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">set</span> <span style="color:#0000ff">global</span> long_query_time<span style="color:#ab5656">=</span><span style="color:#880000">3</span>;
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SHOW</span> VARIABLES <span style="color:#0000ff">LIKE</span> <span style="color:#a31515">'long_query_time%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> Variable_name   <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#ab5656">|</span> long_query_time <span style="color:#ab5656">|</span> <span style="color:#880000">10.000000</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">-----------------+-----------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>

¿Por qué no puedo ver el cambio después de configurarlo?

Debe volver a conectarse o abrir una nueva sesión para ver el valor modificado.

4) Registre SQL lento y analícelo más tarde

Supongamos que establecemos con éxito el tiempo de umbral de SQL lento en 3 segundos (establecer global_long_query_time=3;).

Simular SQL de tiempo de espera:

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">SELECT</span> sleep(<span style="color:#880000">4</span>);
<span style="color:#ab5656">+</span><span style="color:#008000">----------+</span>
<span style="color:#ab5656">|</span> sleep(<span style="color:#880000">4</span>) <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------+</span>
<span style="color:#ab5656">|</span>        <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">4.00</span> sec)
</code></span></span>

Inicio sesión:

Consulta cuántos registros de consulta lenta hay en el sistema actual

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> <span style="color:#0000ff">global</span> status <span style="color:#0000ff">like</span> <span style="color:#a31515">'%Slow_queries%'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> Variable_name <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> Slow_queries  <span style="color:#ab5656">|</span> <span style="color:#880000">1</span>     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)
</code></span></span>

¡Establezca el tiempo de umbral de SQL lento en el archivo de configuración  para que tenga efecto de forma permanente!

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">#[mysqld]下配置:
slow_query_log<span style="color:#ab5656">=</span><span style="color:#880000">1</span>;
slow_query_log_file<span style="color:#ab5656">=</span><span style="color:#ab5656">/</span>var<span style="color:#ab5656">/</span>lib<span style="color:#ab5656">/</span>mysql<span style="color:#ab5656">/</span>atguigu<span style="color:#ab5656">-</span>slow.log
long_query_time<span style="color:#ab5656">=</span><span style="color:#880000">3</span>;
log_output<span style="color:#ab5656">=</span>FILE;
</code></span></span>

② herramienta de análisis de registros mysqldumpslow

En un entorno de producción, si desea analizar manualmente los registros, buscar y analizar SQL, obviamente es una tarea laboriosa. MySQL proporciona una herramienta de análisis de registros mysqldumpslow.

Vea la información de ayuda de mysqldumpslow, mysqldumpslow --help.

  • s: indica de qué manera ordenar
  • c: número de visitas
  • l: tiempo de bloqueo
  • r: registro de retorno
  • t: tiempo de consulta
  • al: tiempo promedio de bloqueo
  • ar: el número promedio de registros devueltos
  • at: tiempo promedio de consulta
  • t: es decir, cuántos datos anteriores se devuelven
  • g: seguido de un patrón de coincidencia regular, no distingue entre mayúsculas y minúsculas

referencia laboral

  • Obtenga los 10 conjuntos de registros SQL más devueltos
    • mysqldumpslow -sr -t 10 /var/lib/mysql/atguigu-slow.log
  • Consigue las 10 SQLs con más visitas
    • mysqldumpslow -sc -t 10 /var/lib/mysql/atguigu-slow.log
  • Obtenga las primeras 10 declaraciones de consulta que contienen uniones izquierdas ordenadas por tiempo
    • mysqldumpslow -st -t 10 -g "unión izquierda" /var/lib/mysql/atguigu-slow.log
  • Además, se recomienda usar estos comandos en combinación con │ y más, de lo contrario, puede haber una explosión de pantalla ( también puede combinar la canalización para escribir el resultado en un archivo )
    • mysqldumpslow -s rt 10 /ar/lib/mysql/atguigu-slow.log | más

3- Script de inserción de datos por lotes (procedimiento almacenado)

①Crear SQL

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">create</span> database bigData;
use bigData;

<span style="color:#0000ff">CREATE</span> <span style="color:#0000ff">TABLE</span> dept(
	id <span style="color:#a31515">INT</span> UNSIGNED <span style="color:#0000ff">PRIMARY</span> KEY AUTO_INCREMENT,
	deptno MEDIUMINT UNSIGNED <span style="color:#0000ff">NOT</span> <span style="color:#0000ff">NULL</span> <span style="color:#0000ff">DEFAULT</span> <span style="color:#880000">0</span>,
	dname <span style="color:#a31515">VARCHAR</span>(<span style="color:#880000">20</span>)<span style="color:#0000ff">NOT</span> <span style="color:#0000ff">NULL</span> <span style="color:#0000ff">DEFAULT</span> "",
	loc <span style="color:#a31515">VARCHAR</span>(<span style="color:#880000">13</span>) <span style="color:#0000ff">NOT</span> <span style="color:#0000ff">NULL</span> <span style="color:#0000ff">DEFAULT</span> ""
)ENGINE<span style="color:#ab5656">=</span>INNODB <span style="color:#0000ff">DEFAULT</span> CHARSET<span style="color:#ab5656">=</span>utf8;

<span style="color:#0000ff">CREATE</span> <span style="color:#0000ff">TABLE</span> emp(
    id <span style="color:#a31515">int</span> unsigned <span style="color:#0000ff">primary</span> key auto_increment,
    empno mediumint unsigned <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>,
    ename <span style="color:#a31515">varchar</span>(<span style="color:#880000">20</span>) <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> <span style="color:#0000ff">default</span> "",
    job <span style="color:#a31515">varchar</span>(<span style="color:#880000">9</span>) <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> <span style="color:#0000ff">default</span> "",
    mgr mediumint unsigned <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>,
    hiredate <span style="color:#a31515">date</span> <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span>,
    sal <span style="color:#a31515">decimal</span>(<span style="color:#880000">7</span>,<span style="color:#880000">2</span>) <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span>,
    comm <span style="color:#a31515">decimal</span>(<span style="color:#880000">7</span>,<span style="color:#880000">2</span>) <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span>,
    deptno mediumint unsigned <span style="color:#0000ff">not</span> <span style="color:#0000ff">null</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>
)ENGINE<span style="color:#ab5656">=</span>INNODB <span style="color:#0000ff">DEFAULT</span> CHARSET<span style="color:#ab5656">=</span>utf8;
</code></span></span>

② Configure el parámetro log_bin_trust_function_creators

Cree una función, si se informa un error: Esta función no tiene nada de DETERMINISTA...

Dado que el registro de consultas lentas está activado, porque activamos el bin-log, debemos especificar un parámetro para nuestra función.

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql"><span style="color:#0000ff">show</span> variables <span style="color:#0000ff">like</span> <span style="color:#a31515">'log_bin_trust_function_creators'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------------------+-------+</span>
<span style="color:#ab5656">|</span> Variable_name                   <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------------------+-------+</span>
<span style="color:#ab5656">|</span> log_bin_trust_function_creators <span style="color:#ab5656">|</span> OFF   <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------------------------+-------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.02</span> sec)
<span style="color:#0000ff">set</span> <span style="color:#0000ff">global</span> log_bin_trust_function_creators<span style="color:#ab5656">=</span><span style="color:#880000">1</span>;
</code></span></span>

Después de agregar los parámetros de esta manera, si mysqld se reinicia, los parámetros anteriores desaparecerán nuevamente. El método permanente:

  • my.ini[mysqld] en Windows más log_bin_trust_function_creators=1

  • /etc/my.cnf en Linux my.cnf[mysqld] más log_bin_trust_function_creators=1

③Cree una función para garantizar que cada dato sea diferente

1) Generar aleatoriamente una cadena

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">delimiter $$ # 两个 $$ 表示结束
<span style="color:#0000ff">create</span> <span style="color:#0000ff">function</span> rand_string(n <span style="color:#a31515">int</span>) <span style="color:#0000ff">returns</span> <span style="color:#a31515">varchar</span>(<span style="color:#880000">255</span>)
<span style="color:#0000ff">begin</span>
    <span style="color:#0000ff">declare</span> chars_str <span style="color:#a31515">varchar</span>(<span style="color:#880000">100</span>) <span style="color:#0000ff">default</span> <span style="color:#a31515">'abcdefghijklmnopqrstuvwxyz'</span>;
    <span style="color:#0000ff">declare</span> return_str <span style="color:#a31515">varchar</span>(<span style="color:#880000">255</span>) <span style="color:#0000ff">default</span> <span style="color:#a31515">''</span>; #定义返回值变量
    <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    while i <span style="color:#ab5656"><</span> n do
        #concat函数连接字符串
        <span style="color:#0000ff">set</span> return_str <span style="color:#ab5656">=</span> concat(return_str,<span style="color:#0000ff">substring</span>(chars_str,<span style="color:#0000ff">floor</span>(<span style="color:#880000">1</span><span style="color:#ab5656">+</span>rand()<span style="color:#ab5656">*</span><span style="color:#880000">52</span>),<span style="color:#880000">1</span>));
        <span style="color:#0000ff">set</span> i<span style="color:#ab5656">=</span>i<span style="color:#ab5656">+</span><span style="color:#880000">1</span>;
    <span style="color:#0000ff">end</span> while;
    <span style="color:#0000ff">return</span> return_str;
<span style="color:#0000ff">end</span> $$
</code></span></span>

2) Genera aleatoriamente números de departamento

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">delimiter $$
<span style="color:#0000ff">create</span> <span style="color:#0000ff">function</span> rand_num() <span style="color:#0000ff">returns</span> <span style="color:#a31515">int</span>(<span style="color:#880000">5</span>)
<span style="color:#0000ff">begin</span>
    <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    <span style="color:#0000ff">set</span> i<span style="color:#ab5656">=</span><span style="color:#0000ff">floor</span>(<span style="color:#880000">100</span><span style="color:#ab5656">+</span>rand()<span style="color:#ab5656">*</span><span style="color:#880000">10</span>);
    <span style="color:#0000ff">return</span> i;
<span style="color:#0000ff">end</span> $$
</code></span></span>

resultado de la operación

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> delimiter $$ # 声明两个 $$ 表示结束
mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">create</span> <span style="color:#0000ff">function</span> rand_string(n <span style="color:#a31515">int</span>) <span style="color:#0000ff">returns</span> <span style="color:#a31515">varchar</span>(<span style="color:#880000">255</span>)
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> <span style="color:#0000ff">begin</span>
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">declare</span> chars_str <span style="color:#a31515">varchar</span>(<span style="color:#880000">100</span>) <span style="color:#0000ff">default</span> <span style="color:#a31515">'abcdefghijklmnopqrstuvwxyz'</span>;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">declare</span> return_str <span style="color:#a31515">varchar</span>(<span style="color:#880000">255</span>) <span style="color:#0000ff">default</span> <span style="color:#a31515">''</span>;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     while i <span style="color:#ab5656"><</span> n do
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>         <span style="color:#0000ff">set</span> return_str <span style="color:#ab5656">=</span> concat(return_str,<span style="color:#0000ff">substring</span>(chars_str,<span style="color:#0000ff">floor</span>(<span style="color:#880000">1</span><span style="color:#ab5656">+</span>rand()<span style="color:#ab5656">*</span><span style="color:#880000">52</span>),<span style="color:#880000">1</span>));
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>         <span style="color:#0000ff">set</span> i<span style="color:#ab5656">=</span>i<span style="color:#ab5656">+</span><span style="color:#880000">1</span>;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">end</span> while;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">return</span> return_str;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> <span style="color:#0000ff">end</span> $$
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> rand_string(<span style="color:#880000">2</span>);
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> ;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> $$
<span style="color:#ab5656">+</span><span style="color:#008000">----------------+</span>
<span style="color:#ab5656">|</span> rand_string(<span style="color:#880000">2</span>) <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------------+</span>
<span style="color:#ab5656">|</span> af             <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> delimiter $$
mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">create</span> <span style="color:#0000ff">function</span> rand_num() <span style="color:#0000ff">returns</span> <span style="color:#a31515">int</span>(<span style="color:#880000">5</span>)
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> <span style="color:#0000ff">begin</span>
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">set</span> i<span style="color:#ab5656">=</span><span style="color:#0000ff">floor</span>(<span style="color:#880000">100</span><span style="color:#ab5656">+</span>rand()<span style="color:#ab5656">*</span><span style="color:#880000">10</span>);
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span>     <span style="color:#0000ff">return</span> i;
    <span style="color:#ab5656">-</span><span style="color:#ab5656">></span> <span style="color:#0000ff">end</span> $$
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> rand_num()$$
<span style="color:#ab5656">+</span><span style="color:#008000">------------+</span>
<span style="color:#ab5656">|</span> rand_num() <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">------------+</span>
<span style="color:#ab5656">|</span>        <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">------------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)
</code></span></span>

④ Crear un procedimiento almacenado

Cree un procedimiento almacenado para insertar datos en la tabla emp

Nota: establezca la confirmación automática en 0;

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">delimiter $$
<span style="color:#0000ff">create</span> <span style="color:#0000ff">procedure</span> insert_emp(<span style="color:#0000ff">in</span> <span style="color:#0000ff">start</span> <span style="color:#a31515">int</span>(<span style="color:#880000">10</span>),<span style="color:#0000ff">in</span> max_num <span style="color:#a31515">int</span>(<span style="color:#880000">10</span>))#没有返回值
<span style="color:#0000ff">begin</span>
    <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    <span style="color:#0000ff">set</span> autocommit <span style="color:#ab5656">=</span> <span style="color:#880000">0</span>;#把自动提交设置为<span style="color:#880000">0</span> ,默认是写一次提交一次,需要批处理只提交一次
    repeat
        <span style="color:#0000ff">set</span> i <span style="color:#ab5656">=</span> i<span style="color:#ab5656">+</span><span style="color:#880000">1</span>;
        <span style="color:#0000ff">insert</span> <span style="color:#0000ff">into</span> emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) <span style="color:#0000ff">values</span>((<span style="color:#0000ff">start</span><span style="color:#ab5656">+</span>i),rand_string(<span style="color:#880000">6</span>),<span style="color:#a31515">'salesman'</span>,<span style="color:#880000">0001</span>,curdate(),<span style="color:#880000">2000</span>,<span style="color:#880000">400</span>,rand_num());
        until i<span style="color:#ab5656">=</span>max_num
        <span style="color:#0000ff">end</span> repeat;
    <span style="color:#0000ff">commit</span>;#注意要<span style="color:#0000ff">commit</span>
<span style="color:#0000ff">end</span> $$
</code></span></span>

Cree un procedimiento almacenado para insertar datos en la tabla de departamento

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">delimiter $$
<span style="color:#0000ff">create</span> <span style="color:#0000ff">procedure</span> insert_dept(<span style="color:#0000ff">in</span> <span style="color:#0000ff">start</span> <span style="color:#a31515">int</span>(<span style="color:#880000">10</span>),<span style="color:#0000ff">in</span> max_num <span style="color:#a31515">int</span>(<span style="color:#880000">10</span>))
<span style="color:#0000ff">begin</span>
    <span style="color:#0000ff">declare</span> i <span style="color:#a31515">int</span> <span style="color:#0000ff">default</span> <span style="color:#880000">0</span>;
    <span style="color:#0000ff">set</span> autocommit <span style="color:#ab5656">=</span> <span style="color:#880000">0</span>;
    repeat
        <span style="color:#0000ff">set</span> i <span style="color:#ab5656">=</span> i<span style="color:#ab5656">+</span><span style="color:#880000">1</span>;
        <span style="color:#0000ff">insert</span> <span style="color:#0000ff">into</span> dept(deptno,dname,loc) <span style="color:#0000ff">values</span>((<span style="color:#0000ff">start</span><span style="color:#ab5656">+</span>i),rand_string(<span style="color:#880000">10</span>),rand_string(<span style="color:#880000">8</span>));
        until i<span style="color:#ab5656">=</span>max_num
        <span style="color:#0000ff">end</span> repeat;
    <span style="color:#0000ff">commit</span>;
<span style="color:#0000ff">end</span> $$
</code></span></span>

⑤ Llamar al procedimiento almacenado

Insertar datos en la tabla de departamento

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> DELIMITER ;#恢复为;作为结束符号,上面改为了$$
mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">CALL</span> insert_dept(<span style="color:#880000">100</span>, <span style="color:#880000">10</span>);
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.01</span> sec)
</code></span></span>

Inserte 500,000 datos en la tabla emp

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> DELIMITER ;
mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">CALL</span> insert_emp(<span style="color:#880000">100001</span>, <span style="color:#880000">500000</span>);
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">27.00</span> sec)
</code></span></span>

resultado de la operación

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> dept;
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+---------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> deptno <span style="color:#ab5656">|</span> dname   <span style="color:#ab5656">|</span> loc    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+---------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">101</span> <span style="color:#ab5656">|</span> mqgfy   <span style="color:#ab5656">|</span> ck     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span> wgighsr <span style="color:#ab5656">|</span> kbq    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">103</span> <span style="color:#ab5656">|</span> gjgdyj  <span style="color:#ab5656">|</span> brb    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">104</span> <span style="color:#ab5656">|</span> gzfug   <span style="color:#ab5656">|</span> p      <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span> keitu   <span style="color:#ab5656">|</span> cib    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span> nndvuv  <span style="color:#ab5656">|</span> csue   <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span> cdudl   <span style="color:#ab5656">|</span> tw     <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">8</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span> aafyea  <span style="color:#ab5656">|</span> aqq    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">9</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span> zuqezjx <span style="color:#ab5656">|</span> dpqoyo <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">10</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">110</span> <span style="color:#ab5656">|</span> pam     <span style="color:#ab5656">|</span> cses   <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+---------+--------+</span>
<span style="color:#880000">10</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> emp limit <span style="color:#880000">20</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> empno  <span style="color:#ab5656">|</span> ename <span style="color:#ab5656">|</span> job      <span style="color:#ab5656">|</span> mgr <span style="color:#ab5656">|</span> hiredate   <span style="color:#ab5656">|</span> sal     <span style="color:#ab5656">|</span> comm   <span style="color:#ab5656">|</span> deptno <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100002</span> <span style="color:#ab5656">|</span> xmbva <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100003</span> <span style="color:#ab5656">|</span> aeq   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100004</span> <span style="color:#ab5656">|</span> cnjfz <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100005</span> <span style="color:#ab5656">|</span> wwhd  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">100</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100006</span> <span style="color:#ab5656">|</span> e     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100007</span> <span style="color:#ab5656">|</span> yjfr  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100008</span> <span style="color:#ab5656">|</span> xlp   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">8</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100009</span> <span style="color:#ab5656">|</span> mp    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">9</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100010</span> <span style="color:#ab5656">|</span> tcdl  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">10</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100011</span> <span style="color:#ab5656">|</span> akw   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">11</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100012</span> <span style="color:#ab5656">|</span> re    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">12</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100013</span> <span style="color:#ab5656">|</span> qip   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">13</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100014</span> <span style="color:#ab5656">|</span> bvaf  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">14</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100015</span> <span style="color:#ab5656">|</span> g     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">15</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100016</span> <span style="color:#ab5656">|</span> qt    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">16</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100017</span> <span style="color:#ab5656">|</span> bzy   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">17</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100018</span> <span style="color:#ab5656">|</span> gf    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">18</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100019</span> <span style="color:#ab5656">|</span> r     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">19</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100020</span> <span style="color:#ab5656">|</span> ydokg <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">100</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">20</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100021</span> <span style="color:#ab5656">|</span> ee    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#880000">20</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.00</span> sec)
</code></span></span>

4- Análisis SQL con Mostrar Perfil

MySQL proporciona Show Profile y se puede utilizar para analizar el consumo de recursos de la ejecución de sentencias en la sesión actual . Medidas que se pueden utilizar para el ajuste de SQL. (más detallado que Explicar)

documento oficial

De forma predeterminada, el parámetro está desactivado y se guardan los resultados de las últimas 15 ejecuciones.

  • El registro de consultas lentas captura SQL con consultas lentas;
  • Explicar
  • Mostrar perfil
  • Ajuste de propiedades importantes de los datos y scripts del servidor (como el archivo de configuración de my.cnf)

Pasos de análisis

1. Si es compatible, verifique si la versión actual de mysql lo admite.

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> variables <span style="color:#0000ff">like</span> <span style="color:#a31515">'profiling'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> Variable_name <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> profiling     <span style="color:#ab5656">|</span> OFF   <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>

El valor predeterminado es desactivado y debe activarse antes de su uso.

2. Encienda la función, el valor predeterminado está apagado, debe encenderse antes de usar.

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">set</span> profiling<span style="color:#ab5656">=</span><span style="color:#0000ff">on</span>;
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> variables <span style="color:#0000ff">like</span> <span style="color:#a31515">'profiling'</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> Variable_name <span style="color:#ab5656">|</span> <span style="color:#0000ff">Value</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#ab5656">|</span> profiling     <span style="color:#ab5656">|</span> <span style="color:#0000ff">ON</span>    <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">---------------+-------+</span>
<span style="color:#880000">1</span> <span style="color:#a31515">row</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>

3. Ejecutar SQL

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> emp <span style="color:#0000ff">group</span> <span style="color:#0000ff">by</span> id<span style="color:#ab5656">%</span><span style="color:#880000">10</span> limit <span style="color:#880000">150000</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> empno  <span style="color:#ab5656">|</span> ename <span style="color:#ab5656">|</span> job      <span style="color:#ab5656">|</span> mgr <span style="color:#ab5656">|</span> hiredate   <span style="color:#ab5656">|</span> sal     <span style="color:#ab5656">|</span> comm   <span style="color:#ab5656">|</span> deptno <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">10</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100011</span> <span style="color:#ab5656">|</span> akw   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100002</span> <span style="color:#ab5656">|</span> xmbva <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100003</span> <span style="color:#ab5656">|</span> aeq   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100004</span> <span style="color:#ab5656">|</span> cnjfz <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100005</span> <span style="color:#ab5656">|</span> wwhd  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">100</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100006</span> <span style="color:#ab5656">|</span> e     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100007</span> <span style="color:#ab5656">|</span> yjfr  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100008</span> <span style="color:#ab5656">|</span> xlp   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">8</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100009</span> <span style="color:#ab5656">|</span> mp    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">9</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100010</span> <span style="color:#ab5656">|</span> tcdl  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#880000">10</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.55</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> emp <span style="color:#0000ff">group</span> <span style="color:#0000ff">by</span> id<span style="color:#ab5656">%</span><span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> <span style="color:#880000">5</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span> id <span style="color:#ab5656">|</span> empno  <span style="color:#ab5656">|</span> ename <span style="color:#ab5656">|</span> job      <span style="color:#ab5656">|</span> mgr <span style="color:#ab5656">|</span> hiredate   <span style="color:#ab5656">|</span> sal     <span style="color:#ab5656">|</span> comm   <span style="color:#ab5656">|</span> deptno <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100002</span> <span style="color:#ab5656">|</span> xmbva <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100004</span> <span style="color:#ab5656">|</span> cnjfz <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">5</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100006</span> <span style="color:#ab5656">|</span> e     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">7</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100008</span> <span style="color:#ab5656">|</span> xlp   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">9</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100010</span> <span style="color:#ab5656">|</span> tcdl  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">11</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100012</span> <span style="color:#ab5656">|</span> re    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">13</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100014</span> <span style="color:#ab5656">|</span> bvaf  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">15</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100016</span> <span style="color:#ab5656">|</span> qt    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">17</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100018</span> <span style="color:#ab5656">|</span> gf    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">19</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100020</span> <span style="color:#ab5656">|</span> ydokg <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">100</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100003</span> <span style="color:#ab5656">|</span> aeq   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">4</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100005</span> <span style="color:#ab5656">|</span> wwhd  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">100</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">6</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100007</span> <span style="color:#ab5656">|</span> yjfr  <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>  <span style="color:#880000">8</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100009</span> <span style="color:#ab5656">|</span> mp    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">102</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">10</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100011</span> <span style="color:#ab5656">|</span> akw   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">12</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100013</span> <span style="color:#ab5656">|</span> qip   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">105</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">14</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100015</span> <span style="color:#ab5656">|</span> g     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">106</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">16</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100017</span> <span style="color:#ab5656">|</span> bzy   <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">109</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">18</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100019</span> <span style="color:#ab5656">|</span> r     <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">108</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#880000">20</span> <span style="color:#ab5656">|</span> <span style="color:#880000">100021</span> <span style="color:#ab5656">|</span> ee    <span style="color:#ab5656">|</span> salesman <span style="color:#ab5656">|</span>   <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2021</span><span style="color:#880000">-04</span><span style="color:#880000">-05</span> <span style="color:#ab5656">|</span> <span style="color:#880000">2000.00</span> <span style="color:#ab5656">|</span> <span style="color:#880000">400.00</span> <span style="color:#ab5656">|</span>    <span style="color:#880000">107</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----+--------+-------+----------+-----+------------+---------+--------+--------+</span>
<span style="color:#880000">20</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.57</span> sec)
</code></span></span>

4. Ver los resultados, mostrar perfiles;

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> profiles;
<span style="color:#ab5656">+</span><span style="color:#008000">----------+------------+-----------------------------------------------+</span>
<span style="color:#ab5656">|</span> Query_ID <span style="color:#ab5656">|</span> Duration   <span style="color:#ab5656">|</span> Query                                         <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------+------------+-----------------------------------------------+</span>
<span style="color:#ab5656">|</span>        <span style="color:#880000">1</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.00204000</span> <span style="color:#ab5656">|</span> <span style="color:#0000ff">show</span> variables <span style="color:#0000ff">like</span> <span style="color:#a31515">'profiling'</span>               <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>        <span style="color:#880000">2</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.55134250</span> <span style="color:#ab5656">|</span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> emp <span style="color:#0000ff">group</span> <span style="color:#0000ff">by</span> id<span style="color:#ab5656">%</span><span style="color:#880000">10</span> limit <span style="color:#880000">150000</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span>        <span style="color:#880000">3</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.56902000</span> <span style="color:#ab5656">|</span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> emp <span style="color:#0000ff">group</span> <span style="color:#0000ff">by</span> id<span style="color:#ab5656">%</span><span style="color:#880000">20</span> <span style="color:#0000ff">order</span> <span style="color:#0000ff">by</span> <span style="color:#880000">5</span>   <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">----------+------------+-----------------------------------------------+</span>
<span style="color:#880000">3</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span>, <span style="color:#880000">1</span> warning (<span style="color:#880000">0.00</span> sec)
</code></span></span>
  1. Hoja de prueba de laboratorio: Diagnostique SQL, muestre cpu de perfil, bloquee io para consultar el número de SQL del problema en el paso anterior, muestre perfiles;
<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">show</span> profile cpu,block io <span style="color:#0000ff">for</span> query <span style="color:#880000">3</span>;
<span style="color:#ab5656">+</span><span style="color:#008000">--------------------------------+----------+----------+------------+--------------+---------------+</span>
<span style="color:#ab5656">|</span> Status                         <span style="color:#ab5656">|</span> Duration <span style="color:#ab5656">|</span> CPU_user <span style="color:#ab5656">|</span> CPU_system <span style="color:#ab5656">|</span> Block_ops_in <span style="color:#ab5656">|</span> Block_ops_out <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">--------------------------------+----------+----------+------------+--------------+---------------+</span>
<span style="color:#ab5656">|</span> starting                       <span style="color:#ab5656">|</span> <span style="color:#880000">0.000008</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000007</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Waiting <span style="color:#0000ff">for</span> query cache lock   <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> checking query cache <span style="color:#0000ff">for</span> query <span style="color:#ab5656">|</span> <span style="color:#880000">0.000021</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000021</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> checking permissions           <span style="color:#ab5656">|</span> <span style="color:#880000">0.000004</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Opening tables                 <span style="color:#ab5656">|</span> <span style="color:#880000">0.000009</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000009</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#0000ff">System</span> lock                    <span style="color:#ab5656">|</span> <span style="color:#880000">0.000006</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000006</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Waiting <span style="color:#0000ff">for</span> query cache lock   <span style="color:#ab5656">|</span> <span style="color:#880000">0.000009</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000009</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> init                           <span style="color:#ab5656">|</span> <span style="color:#880000">0.000019</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000019</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> optimizing                     <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> statistics                     <span style="color:#ab5656">|</span> <span style="color:#880000">0.000007</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000008</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> preparing                      <span style="color:#ab5656">|</span> <span style="color:#880000">0.000004</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000004</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Creating tmp <span style="color:#0000ff">table</span>             <span style="color:#ab5656">|</span> <span style="color:#880000">0.000020</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000020</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> executing                      <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Copying <span style="color:#0000ff">to</span> tmp <span style="color:#0000ff">table</span>           <span style="color:#ab5656">|</span> <span style="color:#880000">0.329865</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.330004</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Sorting <span style="color:#0000ff">result</span>                 <span style="color:#ab5656">|</span> <span style="color:#880000">0.000015</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000011</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Sending data                   <span style="color:#ab5656">|</span> <span style="color:#880000">0.000023</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000023</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#0000ff">end</span>                            <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> removing tmp <span style="color:#0000ff">table</span>             <span style="color:#ab5656">|</span> <span style="color:#880000">0.000638</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000638</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> <span style="color:#0000ff">end</span>                            <span style="color:#ab5656">|</span> <span style="color:#880000">0.000005</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000004</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> query <span style="color:#0000ff">end</span>                      <span style="color:#ab5656">|</span> <span style="color:#880000">0.000016</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000016</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> closing tables                 <span style="color:#ab5656">|</span> <span style="color:#880000">0.000005</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000005</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> freeing items                  <span style="color:#ab5656">|</span> <span style="color:#880000">0.000006</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000005</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Waiting <span style="color:#0000ff">for</span> query cache lock   <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> freeing items                  <span style="color:#ab5656">|</span> <span style="color:#880000">0.000056</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000056</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> Waiting <span style="color:#0000ff">for</span> query cache lock   <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> freeing items                  <span style="color:#ab5656">|</span> <span style="color:#880000">0.000001</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000001</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> storing <span style="color:#0000ff">result</span> <span style="color:#0000ff">in</span> query cache  <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000003</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> logging slow query             <span style="color:#ab5656">|</span> <span style="color:#880000">0.000001</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000001</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">|</span> cleaning up                    <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000002</span> <span style="color:#ab5656">|</span> <span style="color:#880000">0.000000</span>   <span style="color:#ab5656">|</span>            <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>             <span style="color:#880000">0</span> <span style="color:#ab5656">|</span>
<span style="color:#ab5656">+</span><span style="color:#008000">--------------------------------+----------+----------+------------+--------------+---------------+</span>
<span style="color:#880000">29</span> <span style="color:#0000ff">rows</span> <span style="color:#0000ff">in</span> <span style="color:#0000ff">set</span> (<span style="color:#880000">0.02</span> sec)
</code></span></span>

Parámetro Observaciones

  • TODO: Muestra toda la información general.
  • BLOCK IO: Muestra la sobrecarga relacionada con el bloque lO.
  • CAMBIOS DE CONTEXTO: sobrecarga relacionada con el cambio de contexto.
  • CPU: muestra información de sobrecarga relacionada con la CPU.
  • IPC: muestra información de gastos generales relacionados con el envío y la recepción.
  • MEMORIA: muestra información de sobrecarga relacionada con la memoria.
  • FALLAS DE PÁGINA: Muestra información general relacionada con fallas de página.
  • SOURCE: Muestra información general relacionada con Source_function, Source_file y Source_line.
  • SWAPS: muestra información sobre los gastos generales asociados con el número de intercambios.

6. Conclusiones a las que se debe prestar atención en el desarrollo diario  (es muy malo tener las siguientes cuatro situaciones)

  • Conversión de HEAP a MyISAM El resultado de la consulta es demasiado grande y la memoria no es suficiente, por lo que se mueve al disco.
  • Creación de una tabla tmp Crear una tabla temporal, copiar datos en la tabla temporal, eliminarla después de su uso
  • Copiando a la tabla tmp en el disco Copiando tablas temporales en la memoria al disco, ¡peligroso!
  • bloqueado

5- Registro de consultas globales

Nunca habilite esta función en un entorno de producción.

perfil habilitado

En my.cnf de mysql, la configuración es la siguiente:

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">#开启
general_log<span style="color:#ab5656">=</span><span style="color:#880000">1</span>
#记录日志文件的路径
general_log_file<span style="color:#ab5656">=</span><span style="color:#ab5656">/</span>path<span style="color:#ab5656">/</span>logfile
#输出格式
log_output<span style="color:#ab5656">=</span>FILE
</code></span></span>

Codificación habilitada:

  • establecer general_log global = 1;
  • establecer log_output global = 'TABLA';
<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">set</span> <span style="color:#0000ff">global</span> general_log<span style="color:#ab5656">=</span><span style="color:#880000">1</span>;
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.01</span> sec)

mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">set</span> <span style="color:#0000ff">global</span> log_output<span style="color:#ab5656">=</span><span style="color:#a31515">'TABLE'</span>;
Query OK, <span style="color:#880000">0</span> <span style="color:#0000ff">rows</span> affected (<span style="color:#880000">0.00</span> sec)
</code></span></span>

Después de eso, la instrucción sql que escriba se registrará en la tabla geneial_log en la biblioteca mysql, y puede usar el siguiente comando para verla:

imagen-20210515002344075

<span style="color:#2c2c2c"><span style="background-color:#ffffff"><code class="language-sql">mysql<span style="color:#ab5656">></span> <span style="color:#0000ff">select</span> <span style="color:#ab5656">*</span> <span style="color:#0000ff">from</span> mysql.general_log;
</code></span></span>

Supongo que te gusta

Origin blog.csdn.net/m0_60961651/article/details/132272835
Recomendado
Clasificación