Optimizó el rendimiento de las configuraciones rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries y sslMode de Java JDBC.
Documentación de todas las propiedades de configuración de jdbc:El inicio de sesión del hipervínculo es visible.
Revisión:
allowPublicKeyRetrieval
Al usar MySQL 8.0, tras reiniciar la aplicación, se te indica com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No se permite la recuperación de clave pública
La solución más sencilla es añadirlo después de la conexiónallowPublicKeyRetrieval=true
Si el usuario utiliza autenticación sha256_password, la contraseña debe protegerse durante el tránsito mediante el protocolo TLS, pero si la clave pública RSA no está disponible, se puede usar la clave pública proporcionada por el servidor; La clave pública RSA del servidor puede especificarse en la conexión mediante ServerRSAPublicKeyFile, o el parámetro AllowPublicKeyRetrieval=True para permitir que el cliente obtenga la clave pública del servidor; Sin embargo, debe señalarse que AllowPublicKeyRetrieval=True puede hacer que agentes maliciosos obtengan contraseñas en texto plano mediante ataques man-in-the-middle (MITM), por lo que está desactivada por defecto y debe estar habilitada explícitamente.
rewriteBatchedStatements
Para lograr inserción por lotes de alto rendimiento añadiendo el parámetro rewriteBatchedStatements a la URL de la conexión JDBC en MySQL y asegurando que la versión 5.1.13 o posterior del controlador esté garantizada. Por defecto, el controlador JDBC de MySQL ignora la sentencia executeBatch(), divide un conjunto de sentencias SQL que esperamos ejecutar en lotes y las envía a la base de datos MySQL una por una. Solo estableciendo el parámetro rewriteBatchedStatements en true el controlador ejecutará el SQL en lotes Esta opción también es válida para INSERTAR/ACTUALIZAR/ELIMINAR
Por defecto, el controlador MySQL Jdbc ignora la sentencia executeBatch(), descompone un conjunto de sentencias SQL que esperamos ejecutar en lotes y las envía a la base de datos MySQL una por una, lo que provoca directamente bajo rendimiento.
Solo configurando el parámetro rewriteBatchedStatements en true, el controlador te ayudará a ejecutar SQL en masa (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=true)
allowMultiQueries
Permiso para usar'; 'Separa múltiples consultas (verdadero/falso) en una sola sentencia. El valor por defecto es "false", lo que no afecta a los métodos addBatch() y executeBatch(), que dependen de rewriteBatchStatements.
Cuando MySQL se conecte a una base de datos, añade la sentencia:allowMultiQueries=trueEl papel de ":
1. Puedes llevar un punto y coma después de la sentencia SQL para lograr la ejecución de varias sentencias. 2. El procesamiento por lotes puede realizarse y se pueden emitir múltiples sentencias SQL al mismo tiempo.
sslMode
Por defecto, las conexiones de red están cifradas por SSL; Esta función te permite desactivar la conexión segura o seleccionar un nivel de seguridad diferente. Se permiten los siguientes valores: "DESHABILITADO" - se establece una conexión sin cifrar; "PREFERIDOS" - (por defecto) Si el servidor habilita conexiones cifradas, se establece una conexión cifrada; de lo contrario, vuelve a una conexión no cifrada; "OBLIGATORIO" - Establecer una conexión segura si el servidor la ha habilitado, de lo contrario falla; "VERIFY_CA" - Similar a "REQUIRED", pero además valida el certificado TLS del servidor frente al certificado de autoridad certificadora (CA) configurada; "VERIFY_IDENTITY" - como "VERIFY_CA",
Este atributo reemplaza los antiguos atributos obsoletos "useSSL", "requireSSL" y "verifyServerCertificate", que aún se aceptan pero se convierten en el valor de "sslMode" si "sslMode" no está explícitamente establecido: "useSSL=false" se convierte en "sslMode=disabled"; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} se traduce como "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} se traduce como "sslMode=REQUIRED"; {"useSSL=true" Y "verifyServerCertificate=true"} se traduce como "La configuración predeterminada para "sslMode" es "PREFERRED", que es equivalente a las configuraciones tradicionales "useSSL=true", "requireSSL=false" y "verifyServerCertificate=false", que es la misma que el Connector/ La configuración predeterminada para J 8.0.12 y versiones anteriores es diferente en algunos casos. Las aplicaciones que sigan usando los antiguos atributos y dependan de sus antiguos valores predeterminados deberían ser revisadas. La configuración predeterminada para "sslMode" es "PREFERRED", que equivale a la configuración tradicional de "useSSL=true", "requireSSL=false" y "verifyServerCertificate=false", que en algunos casos es diferente de la configuración predeterminada para Connector/ J 8.0.12 y anteriores. Las aplicaciones que sigan usando los antiguos atributos y dependan de sus antiguos valores predeterminados deberían ser revisadas. En algunos casos es 12 o antes. Las aplicaciones que sigan usando los antiguos atributos y dependan de sus antiguos valores predeterminados deberían ser revisadas. En algunos casos es 12 o antes. Las aplicaciones que sigan usando los antiguos atributos y dependan de sus antiguos valores predeterminados deberían ser revisadas.
Si "sslMode" está explícitamente activado, se ignora la propiedad antigua. Si "sslMode" o "useSSL" no están explícitamente definidos, se aplica la configuración predeterminada "sslMode=PREFERRED".
Configuración de JDBC para desactivar conexiones seguras:sslmode=deshabilitado
|