En realidad, es difícil hacer un buen trabajo de subbase de datos y subtabla

Por que dividir

Antes de comenzar oficialmente, Caicai aún debe enfatizar que si su tabla de datos debe dividirse requiere una consideración integral de muchos factores, como si la cantidad de datos en el negocio ha alcanzado el orden de magnitud que debe dividirse y si existen otras soluciones para resolver el problema actual. ? Lo he visto más de una vez. Algunos líderes dividen ciegamente sus mesas sin considerar la situación general. El resultado es que todos están trabajando horas extras durante 996 semanas consecutivas. ¿No sería usted el líder en perder cabello? Algunos arquitectos dividen la mesa al comienzo de una pequeña empresa. Para cooperar con usted, también está trabajando sin descanso para ponerse al día. Después de conectarse, descubren que la cantidad de datos comerciales es muy pequeña, pero el código está demasiado restringido por la estrategia de división de tablas. . Los problemas provocados por el desmantelamiento de tablas a veces son realmente costosos en determinados escenarios.
Los problemas resueltos por la división de las tablas de la base de datos son principalmente problemas de almacenamiento y rendimiento. Una vez que la cantidad de datos en una sola tabla alcanza un cierto nivel, el rendimiento de mysql se reducirá drásticamente. En comparación con las bases de datos de carga como sqlserver y Oracle, mysql todavía está en algunos aspectos En desventaja, pero la estrategia de división de tablas es aplicable a casi todas las bases de datos relacionales.

No sea demasiado ciego en la división de bases de datos

Estrategia de submesa

La división de tablas y la división de bases de datos tienen similitudes, pero las reglas para dividir también son diferentes. Las siguientes reglas de división son para dividir una mesa.

Segmentación horizontal

La segmentación horizontal es el método de segmentación más utilizado en muchas empresas. La esencia es dispersar las filas de datos de una tabla en varias tablas de acuerdo con reglas, como el rango de ID más común y el valor hash de la clave principal de la empresa. En cuanto al orden de magnitud de los datos de la tabla que se van a segmentar, esto está relacionado con el formato de datos almacenado en la tabla. Por ejemplo, una tabla con solo unas pocas columnas de campos int debe tener un límite de almacenamiento más alto que unas pocas columnas de tablas de tipo texto. Supongamos que este límite es de 10 millones. Pero como persona a cargo o arquitecto de un sistema, cuando el nivel de datos de la tabla alcanza decenas de millones de niveles, se debe prestar atención, porque se trata de un peligro oculto de cuello de botella en el rendimiento del sistema.

En comparación con la segmentación horizontal de tablas de datos, prefiero hacer particiones de tablas en escenarios que cumplan con la optimización comercial y asignar diferentes particiones a diferentes discos físicos de acuerdo con las reglas. De esta manera, las declaraciones SQL en el negocio difícilmente se pueden cambiar. Una base de datos sqlserver de nuestra empresa, después de particionar una tabla de negocios, ha alcanzado un volumen de datos de varios miles de millones, pero la velocidad de consulta e inserción aún puede satisfacer las necesidades de la empresa (optimizar un sistema aún requiere esfuerzo para optimizar el nivel comercial ).

imagen

División vertical

Hablando de división vertical, las tablas también se pueden dividir según la empresa. Por ejemplo, hay información del usuario en una base de datos, que se puede dividir en información básica e información ampliada según la empresa. Si es beneficioso para la empresa, se puede dividir completamente en tablas de información básica y ampliar Hoja de información. Por supuesto, también se puede dividir de acuerdo con otras reglas, como dividir la información a la que se accede con frecuencia en una tabla, y otra información poco frecuente en una tabla. Las reglas específicas de división aún dependen del problema que se resuelva en ese momento. La división vertical puede introducir cierta complejidad. Por ejemplo, la consulta original de información básica e información extendida de un usuario puede consultar los resultados a la vez, y después de dividir la tabla, se requiere una operación de unión o dos consultas para consultar los resultados.

imagen

Costo de la subtabla
  1. Una vez que la tabla de datos se divide verticalmente, la consulta original puede convertirse en una consulta de combinación de la tabla, lo que provocará una pérdida de rendimiento en cierta medida.
  2. La segmentación horizontal de la tabla de datos requiere ciertas reglas. Hay principalmente dos reglas de uso común: la segmentación de rango y la segmentación del valor hash. La segmentación de rango se refiere a la segmentación según el rango de un determinado campo. Por ejemplo, la tabla de usuarios se segmenta según el ID de usuario, el ID es de 1 a 100.000 en la tabla de usuarios 1 y los de 100001 a 20 millones están en User2, por lo que esta segmentación La ventaja es que se puede expandir ilimitadamente sin considerar el problema de la migración de datos. La desventaja es que la distribución de datos de la nueva tabla y la tabla anterior no es uniforme, y la selección del rango de subtabla es difícil. Un rango demasiado pequeño dará lugar a demasiadas tablas y demasiadas Causa la confusión de que el problema no está resuelto en absoluto. Otra estrategia de división de tablas es enrutar una columna a diferentes tablas de acuerdo con el valor hash. También tome la ID de usuario como ejemplo. Si planificamos 10 tablas de base de datos al principio, el algoritmo de enrutamiento puede simplemente usar user_id% 10 El valor de representa el número de la tabla de la base de datos a la que pertenecen los datos. El usuario con ID 985 se coloca en la subtabla numerada 5, y el usuario con ID 10086 se coloca en la tabla de palabras numerada 6. La ventaja de esta regla de segmentación es que la distribución de datos de cada tabla es relativamente uniforme, pero la expansión posterior estará diseñada para migrar parte de los datos.
  3. Después de dividir la tabla, si hay un orden por operación, la base de datos será impotente y solo se puede hacer mediante código comercial o middleware de base de datos.
  4. Cuando existe un requisito empresarial de búsqueda, la declaración SQL solo se puede usar para unir varias tablas para consultar las tablas y, de manera similar, también existen requisitos estadísticos, como contar operaciones estadísticas.

¿Ha realizado alguna vez división de mesas en su negocio?

Artículos más interesantes

imagen

Supongo que te gusta

Origin blog.51cto.com/zhanlang/2540872
Recomendado
Clasificación