particionar bbdd en varios ficheros

04/01/2008 - 19:05 por orko | Informe spam
Buenas a todos.

Tenemos una bbdd de 35GB y varias tablas que tienen un tamaño considerado y
hemos pensado para mejorar el rendimiento en ubicar estas tablas en
particiones distintas.

actualmente tememos las siguientes particiones en una unidad logica montada
en raid 10 (36 discos de 168 GB cada uno) de una SAN:

tempDB - unidad H
BBDD - unidad D
transacciones - unidad E
TMP y log - unidad F
MSDTC - unidad G
Quorum - unidad Q

nos gustaria poder ubicar 4 tablas en otras unidades
tabla 1 - unidad J
tabla 2 - unidad K
tabla 3 - unidad L
tabla 4 - unidad M

He estado buscando informacion pero no me queda muy claro como hacer esto en
sql server 2005 enterprise.

Agradeceria cualquier documento o indicaciones de como hacer esto. Un saludo
y gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Isaias
04/01/2008 - 20:46 | Informe spam
Tomado de la ayuda en linea:

ON { <partition_scheme> | filegroup | "default" }
Especifica el esquema de partición o el grupo de archivos en que se almacena
la tabla. Si se especifica <partition_scheme>, la tabla será una tabla con
particiones cuyas particiones se almacenan en un conjunto de uno o más grupos
de archivos especificados en <partition_scheme>. Si se especifica filegroup,
la tabla se almacena en el grupo de archivos mencionado. El grupo de archivos
debe existir en la base de datos. Si se especifica "default" o si ON no se
especifica en ninguna parte, la tabla se almacena en el grupo de archivos
predeterminado. El mecanismo de almacenamiento de una tabla según se
especifica en CREATE TABLE no se puede modificar posteriormente.

ON {<partition_scheme> | filegroup | "default"} se puede especificar también
en una restricción PRIMARY KEY o UNIQUE. Estas restricciones crean índices.
Si se especifica filegroup, el índice se almacena en el grupo de archivos
mencionado. Si se especifica "default" o si ON no se especifica en ninguna
parte, el índice se almacena en el mismo grupo de archivos que la tabla. Si
la restricción PRIMARY KEY o UNIQUE crea un índice agrupado, las páginas de
datos de la tabla se almacenan en el mismo grupo de archivos que el índice.
Si se especifica CLUSTERED o la restricción crea un índice agrupado, y se
especifica un <partition_scheme> distinto del <partition_scheme> o filegroup
de la definición de tabla o viceversa, sólo se respeta la definición de
restricción y se omite el resto.

Saludos
IIslas


"orko" wrote:

Buenas a todos.

Tenemos una bbdd de 35GB y varias tablas que tienen un tamaño considerado y
hemos pensado para mejorar el rendimiento en ubicar estas tablas en
particiones distintas.

actualmente tememos las siguientes particiones en una unidad logica montada
en raid 10 (36 discos de 168 GB cada uno) de una SAN:

tempDB - unidad H
BBDD - unidad D
transacciones - unidad E
TMP y log - unidad F
MSDTC - unidad G
Quorum - unidad Q

nos gustaria poder ubicar 4 tablas en otras unidades
tabla 1 - unidad J
tabla 2 - unidad K
tabla 3 - unidad L
tabla 4 - unidad M

He estado buscando informacion pero no me queda muy claro como hacer esto en
sql server 2005 enterprise.

Agradeceria cualquier documento o indicaciones de como hacer esto. Un saludo
y gracias anticipadas.



Respuesta Responder a este mensaje
#2 orko
05/01/2008 - 02:02 | Informe spam
quieres decir que una vez que la base de datos esta en produccion, ya no
puedo sacar tablas a archivos distintos del principal .mdf?
Es posible hacerlo a traves de Management Studio, manteniendo todos los
datos de la tabla movida?

He conseguido un script para hacerlo pero no estoy seguro si es posible una
vez que la bbdd esta con datos. Adjunto documento:


***************************

Como crear tablas particionadas en SQL Server 2005







Escrito por Marco Herlindo

martes, 27 de junio de 2006

El crear tablas particionadas, es una gran ayuda para mejorar el
performance cuando contamos con tablas de millones de registros, pues
permite dividir la información en diferentes filegroups. Este es un ejemplo
que cubre todo lo necesario para su creación.

Primero debemos de crear una base de datos con diferentes filegroups
definidos, que es donde vamos a colocar las particiones de la tabla.

Ahora debemos de crear una funcion del tipo partición, que nos va a
dar el rango para cada una de las particiones. En este caso creemos una para
particionar los datos por nombre G y N. De esta manera los datos van a
quedar divididos en 3 particiones; De la A a la F, de la G a la M y de la N
a la Z.

CREATE PARTITION FUNCTION nombrePF(nvarchar(30))
AS RANGE RIGHT
FOR VALUES ('G', 'N')
GO

Ahora creemos un esquema para esta partición, para mapear las
particiones a los filegroups

CREATE PARTITION SCHEME nombrePS
AS PARTITION nombrePF TO (fg1,fg2,fg3)

Finalmente podemos crear una tabla particionada en el esquema que
creamos para la partición, especificando una columna particionada apropiada,
en este caso el nombre.

CREATE TABLE DBASupport.Clientes
(ClienteID int, Nombre nvarchar(30))
ON nombrePS (Nombre)
GO

Ahora podemos insertar la información como normalmente lo hacemos.

INSERT DBASupport.Clientes VALUES (1,'Antonio')
INSERT DBASupport.Clientes VALUES (1,'Marco')
INSERT DBASupport.Clientes VALUES (1,'Oscar')
GO

Podemos usar la función $partition, para verificar que la información
a sido automáticamente insertada en su correspondiente filegroup

SELECT Nombre, $partition,nombrePF(Nombre) Partición
FROM DBASupport.Nombre






************************
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida