En el mundo de las bases de datos existe el concepto de particionamiento de tablas, que, en su definición más general, consiste en dividir la información contenida dentro de una tabla en varios grupos de información tanto lógica como físicamente. Esto permite que en bases de datos de gran escala: se aumente el desempeño de la instrucción SQL ejecutada sobre ella, se mejore la disponibilidad de la información contenida, se agilice el proceso de mantenimiento y depurado de las tablas, entre otros.
Para aclarar el concepto, imaginémonos la tabla de cliente de un sistema de información de ventas internacionales, donde uno de los atributos de la tabla es el país de origen del cliente, además de otros campos relevantes. En Oracle es posible crear la tabla y dividirla por cada país en los que el sistema registre información. Adicional a esto, se le puede indicar información física del almacenamiento, ya que el volumen de clientes puede variar dependiendo del país.
Teniendo la tabla de clientes particionada por país, cada vez que el sistema realice un escaneo de información, se está ahorrado el trabajo de revisar toda la información (si se proporciona el país en la consulta) y sabrá que solo debe escanear la partición que corresponde a la ciudad proporcionada.
Sin embargo, no siempre es recomendado aplicarlo; en las bases de datos transaccionales, es muy común que las tablas de gran volumen transaccional también sean utilizadas como fuente de información de reportes masivos y de conciliación. Es aquí cuando la definición de la partición puede o no ayudar al desempeño de la aplicación, es decir, podemos ser muy eficientes en un frente, pero deficientes en otro. Continuando con la tabla de clientes, si el sistema cuenta con reportes sobre la tabla que no incluyen el filtro del país, es posible que el criterio de particionamiento no esté bien elegido y sea necesario cambiarlo.
Para Oracle, un acceso a una tabla particionada en la que los criterios de particionamiento no estén incluidos en los filtros de la instrucción SQL, puede generar un costo elevado y verse reflejado en el rendimiento. Por otro lado, si los criterios de particionamiento están bien aplicados, el rendimiento será óptimo y toda la aplicación tendrá un buen desempeño.
En Oracle existen muchas opciones para realizar el particionamiento de tablas, además también existe el concepto de índices particionados -que ayudan con el desempeño de las instrucciones SQL sobre tablas particionadas-. Para más información de particionamiento de tablas en ORACLE se puede consultar el “Oracle Help Center” y descubrir todas las bondades que tiene esta funcionalidad.