Criar tabelas e índices particionados
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Você pode criar uma tabela particionada ou de índice no SQL Server, no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure usando o SQL Server Management Studio ou o Transact-SQL. Os dados em tabelas e índices particionados são divididos horizontalmente em unidades que podem ser espalhadas por mais de um grupo de arquivos em um banco de dados ou armazenadas em um único grupo de arquivos. O particionamento pode tornar tabelas e índices grandes mais gerenciáveis e escaláveis.
A criação de uma tabela ou índice particionado normalmente acontece em três ou quatro partes:
Opcionalmente, criar um grupo de arquivos ou grupos de arquivos e arquivos de dados correspondentes que manterão as partições especificadas pelo esquema de partição. A principal razão para colocar partições em vários grupos de arquivos é garantir que você possa executar operações de backup e restauração em grupos de arquivos de forma independente. Se isso não for necessário, você pode optar por atribuir todas as partições a um único grupo de arquivos, usando um grupo de arquivos existente, como
PRIMARY
, ou um novo grupo de arquivos com arquivos de dados relacionados. Em quase todos os cenários, obterá todos os benefícios do particionamento, quer utilize ou não vários grupos de arquivos.Crie uma função de partição que mapeie as linhas de uma tabela ou índice em partições com base nos valores de uma coluna especificada. Você pode usar uma única função de partição para particionar vários objetos.
Crie um esquema de partição que mapeie as partições de uma tabela ou índice particionado para um grupo de arquivos ou para vários grupos de arquivos. Você pode usar um único esquema de partição para particionar vários objetos.
Crie ou altere uma tabela ou índice e especifique o esquema de partição como o local de armazenamento, juntamente com a coluna que servirá como coluna de particionamento.
Observação
O particionamento é totalmente suportado na Base de Dados SQL do Azure. Como apenas o grupo de arquivos PRIMARY
tem suporte no Banco de Dados SQL do Azure, todas as partições devem ser colocadas no grupo de arquivos PRIMARY
.
O particionamento de tabelas também está disponível em pools SQL dedicados no Azure Synapse Analytics, com algumas diferenças de sintaxe. Saiba mais em Particionamento de tabelas no pool SQL dedicado.
Permissões
A criação de uma tabela particionada requer a permissão CREATE TABLE no banco de dados e a permissão ALTER no esquema no qual a tabela está sendo criada. A criação de um índice particionado requer a permissão ALTER na tabela ou exibição onde o índice está sendo criado. A criação de uma tabela ou índice particionado requer qualquer uma das seguintes permissões adicionais:
Permissão ALTER ANY DATASPACE. Esta permissão é atribuída por padrão a membros da função de servidor fixa sysadmin e às funções de base de dados fixas db_owner e db_ddladmin.
Permissão CONTROL ou ALTER na base de dados onde a função de partição e o esquema de partição estão sendo criados.
CONTROL SERVER ou permissão ALTER ANY DATABASE no servidor do banco de dados em que a função de partição e o esquema de partição estão a ser criados.
Criar uma tabela particionada em um grupo de arquivos usando Transact-SQL
Se você não precisar executar operações de backup e restauração de forma independente em grupos de arquivos, particionar uma tabela usando um único grupo de arquivos simplifica o gerenciamento da tabela particionada ao longo do tempo.
Este exemplo é adequado para o Banco de Dados SQL do Azure, que não oferece suporte à adição de arquivos e grupos de arquivos. O particionamento de tabelas tem suporte no Banco de Dados SQL do Azure criando partições no grupo de arquivos PRIMARY
. Para o SQL Server e a Instância Gerenciada SQL do Azure, convém especificar um grupo de arquivos criado pelo usuário, dependendo do seu grupo de arquivos e das práticas de gerenciamento de arquivos.
O exemplo mostra a criação de uma tabela particionada no SQL Server Management Studio (SSMS) usando Transact-SQL e atribui todas as partições ao grupo de arquivos PRIMARY
. O exemplo:
- Cria uma função de partição RANGE RIGHT chamada
myRangePF1
com três valores de limite usando o tipo de dados datetime2. Três valores de limite resultarão em uma tabela particionada com quatro partições. - Cria um esquema de partição chamado
myRangePS1
que usa a sintaxeALL TO
para atribuir todas as partições na função de partiçãomyRangePF1
ao grupo de arquivosPRIMARY
. - Cria uma tabela chamada
PartitionTable
no esquema de partiçãomyRangePS1
, especificando uma coluna chamadacol1
como a coluna de particionamento.
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo cria uma função de partição e um esquema de partição. Uma nova tabela é criada com o esquema de partição especificado como o local de armazenamento.
CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ('PRIMARY') ;
GO
CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
ON myRangePS1 (col1) ;
GO
Crie uma tabela particionada em vários grupos de arquivos com Transact-SQL
Siga as etapas nesta seção para criar um ou mais grupos de arquivos, arquivos correspondentes e uma tabela particionada usando Transact-SQL no SSMS.
O SQL Server e a Instância Gerenciada SQL do Azure dão suporte à criação de grupos de arquivos e arquivos. A Instância Gerenciada SQL do Azure configura automaticamente o caminho para todos os arquivos de banco de dados adicionados, portanto, o comando ALTER DATABASE ADD FILE
na Instância Gerenciada SQL do Azure não permite o parâmetro FILENAME
. O Banco de Dados SQL do Azure dá suporte à criação de tabelas particionadas somente no grupo de arquivos PRIMARY
. Encontre um código de exemplo para o Banco de Dados SQL do Azure no Criar uma tabela particionada em um grupo de arquivos usando o Transact-SQL.
Execute o exemplo a seguir em um banco de dados vazio. O exemplo:
- Adiciona quatro novos grupos de arquivos a um banco de dados.
- Adiciona um arquivo a cada grupo de arquivos.
- Cria uma função de partição RANGE RIGHT chamada
myRangePF1
com três valores de limite que particionarão uma tabela em quatro partições. - Cria um esquema de partição chamado
myRangePS1
que aplicamyRangePF1
aos quatro novos filegroups. - Cria uma tabela particionada chamada
PartitionTable
que usamyRangePS1
para particionarcol1
.
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra de ferramentas Padrão, selecione Nova Consulta.
Este exemplo cria um novo banco de dados e o usa. Em seguida, ele cria novos grupos de arquivos, uma função de partição e um esquema de partição. Uma nova tabela é criada com o esquema de partição especificado como o local de armazenamento. Copie e cole o exemplo a seguir na janela de consulta.
Se você estiver usando uma instância gerenciada, remova o parâmetro
FILENAME
e o valor associado do comandoALTER DATABASE ADD FILE
. A instância gerenciada determina o caminho do arquivo para você automaticamente.Se você estiver usando uma instância do SQL Server, personalize o valor do parâmetro
FILENAME
para um local apropriado para sua instância.Se desejar usar um banco de dados existente, remova o comando
CREATE DATABASE
e altere a instruçãoUSE
para o nome do banco de dados apropriado.SELECIONE executar.
CREATE DATABASE PartitionTest; GO USE PartitionTest; GO ALTER DATABASE PartitionTest ADD FILEGROUP test1fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test2fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test3fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test4fg; ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest1, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest1.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test1fg; ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest2, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest2.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test2fg; GO ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest3, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest3.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test3fg; GO ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest4, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest4.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test4fg; GO CREATE PARTITION FUNCTION myRangePF1 (datetime2(0)) AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ; GO CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) ; GO CREATE TABLE PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10)) ON myRangePS1 (col1) ; GO
Particionar uma tabela com o SSMS
Siga as etapas nesta seção para, opcionalmente, criar grupos de arquivos e arquivos correspondentes e, em seguida, criar uma tabela particionada ou particionar uma tabela existente usando o Assistente para Criar Partição no SQL Server Management Studio (SSMS). O Assistente para Criar Partição está disponível no SSMS para o SQL Server e na Azure SQL Managed Instance. Para a Base de Dados SQL do Azure, consulte Criar uma tabela particionada num grupo de ficheiros usando o Transact-SQL.
Criar novos grupos de arquivos (opcional)
Se você deseja colocar sua tabela particionada em um ou mais novos grupos de arquivos , siga as etapas nesta seção. O SQL Server e a Instância Gerenciada SQL do Azure dão suporte à criação de grupos de arquivos e arquivos. Para a Instância Gerenciada SQL do Azure, o caminho para todos os arquivos criados será configurado automaticamente para você.
No Pesquisador de Objetos, clique com o botão direito do mouse no banco de dados no qual você deseja criar uma tabela particionada e selecione Propriedades.
Na caixa de diálogo Propriedades do Banco de Dados -database_name, em Selecione uma página, selecione Grupos de arquivos.
Na seção Linhas, selecione Adicionar. Na nova linha, insira o nome do grupo de arquivos.
Advertência
Ao especificar vários grupos de arquivos, você sempre deve ter um grupo de arquivos extra, além do número de grupos de arquivos especificados para os valores de limite ao criar partições.
Continue adicionando linhas até ter criado todos os grupos de arquivos para a tabela ou tabelas particionadas.
Selecione OK.
Em Selecione uma página, selecione Ficheiros.
Em Linhas, selecione Adicionar. Na nova linha, insira um nome de arquivo e selecione um grupo de arquivos.
Continue adicionando linhas até ter criado pelo menos um arquivo para cada grupo de arquivos.
Criar uma tabela particionada
Opcionalmente, expanda a pasta Tabelas e crie uma tabela como faria normalmente. Para obter mais informações, consulte Criar tabelas (Mecanismo de Banco de Dados). Como alternativa, você pode especificar uma tabela existente na próxima etapa.
Clique com o botão direito do rato na tabela que pretende particionar, aponte para Armazenamento e, em seguida, selecione Criar Partição....
No Assistente para Criar Partição,, na página Bem-vindo ao Assistente para Criar Partição, selecione Avançar.
Na página Selecionar uma Coluna de Particionamento, na grade Colunas de Particionamento Disponíveis, selecione a coluna pela qual deseja particionar a tabela. Somente colunas com tipos de dados que podem ser usados para particionar dados serão exibidas na grelha colunas de particionamento disponíveis. Se você selecionar uma coluna computada como a coluna de particionamento, a coluna deverá ser criada como uma coluna persistente.
As opções que você tem para a coluna de particionamento e o intervalo de valores são determinadas principalmente pela extensão em que seus dados podem ser agrupados de forma lógica. Por exemplo, você pode optar por dividir seus dados em agrupamentos lógicos por meses ou trimestres de um ano. As consultas que você planeja fazer em relação aos seus dados determinam se esse agrupamento lógico é adequado para gerenciar suas partições de tabela. Todos os tipos de dados são válidos para uso como colunas de particionamento, exceto de texto, ntext, de imagem, xml, de carimbo de data/hora, varchar(max), nvarchar(max), varbinary(max), tipos de dados de alias ou tipos de dados definidos pelo usuário CLR (Common Language Runtime).
As seguintes opções adicionais estão disponíveis nesta página:
Coloque esta tabela na tabela particionada selecionada
Permite selecionar uma tabela particionada que contenha dados relacionados para unir a esta tabela na coluna de particionamento. As tabelas com partições unidas nas colunas de particionamento são normalmente consultadas de forma mais eficiente.Alinhe o armazenamento de índices não exclusivos e índices exclusivos com uma coluna de partição indexada
Alinha todos os índices da tabela que são particionados com o mesmo esquema de partição. Quando uma tabela e seus índices estão alinhados, você pode mover partições para dentro e para fora de tabelas particionadas de forma mais eficaz, porque seus dados são particionados da mesma maneira.Depois de selecionar a coluna de particionamento e quaisquer outras opções, selecione Avançar.
Na página Selecionar uma Função de Partição, em Selecionar Função de Partição, selecione Nova Função de Partição ou Função de Partição Existente. Se você escolher Nova função de partição, digite o nome da função. Se optar por função de partição existente, selecione o nome da função que deseja usar a partir da lista. A opção Função de Partição Existente não estará disponível se não houver outra função de partição no banco de dados.
Depois de concluir esta página, selecione Avançar.
Na página Selecionar um esquema de partição, em Selecionar esquema de partição, selecione Novo esquema de partição ou Esquema de partição existente. Se você escolher Novo esquema de partição, digite o nome do esquema. Se você escolher esquema de partição existente, selecione o nome do esquema que deseja usar na lista. A opção esquema de partição existente não estará disponível se não houver outros esquemas de partição na base de dados.
Depois de concluir esta página, selecione Avançar.
Na página Partições do Mapa, em Intervalo, selecione limite esquerdo ou limite direito. Limite esquerdo especifica que o valor delimitador mais alto será incluído em uma partição. Limite direito especifica que o valor limite mais baixo será incluído em cada partição. Saiba mais sobre os intervalos esquerdo e direito na função de Partição .
Ao especificar vários pontos de limite, você sempre deve inserir uma linha extra além das linhas que atribuem valores de limite a um grupo de arquivos.
Na grelha "Selecionar filegroups e especificar valores de limite", em filegroup, selecione o filegroup no qual pretende particionar os seus dados. Em Limite, insira o valor do limite para cada grupo de arquivos. Se desejar atribuir várias ou todas as partições ao mesmo grupo de arquivos, selecione o mesmo nome de grupo de arquivos para cada linha. Se você selecionar um grupo de arquivos em uma única linha e o valor de limite for deixado vazio, a função de partição mapeia toda a tabela ou índice em uma única partição usando o nome da função de partição.
As seguintes opções adicionais estão disponíveis nesta página:
Estabeleça limites...
Abre a caixa de diálogo Definir Valores de Limite para selecionar os valores de limite e os intervalos de datas desejados para suas partições. Essa opção só está disponível quando você seleciona uma coluna de particionamento que contém um dos seguintes tipos de dados: date, datetime, smalldatetime, datetime2ou datetimeoffset.Estimar armazenamento
Estima a contagem de linhas, o espaço necessário e o espaço disponível para armazenamento para cada grupo de arquivos especificado para as partições. Esses valores são mostrados na grelha como valores de leitura apenas.A caixa de diálogo Definir Valores de Limite permite as seguintes opções adicionais:
Data de início
Seleciona a data de início para os valores de intervalo de suas partições.Data de fim
Seleciona a data final para os valores do intervalo de suas partições. Se tiver selecionado Limite esquerdo na página Partições do Mapa, essa data será o último valor para cada grupo de arquivos/partição. Se tiver selecionado Limite à Direita na página de Partições do Mapa, essa data será o primeiro valor no penúltimo agrupamento de ficheiros.Intervalo de datas
Seleciona a granularidade de data ou o incremento de valor de intervalo desejado para cada partição.Depois de concluir esta página, selecione Avançar.
Na página Selecionar uma Opção de Saída, especifique de que forma pretende concluir a sua tabela particionada. Selecione Criar Script para criar um script SQL com base nas páginas anteriores do assistente. Selecione Executar imediatamente para criar a nova tabela particionada depois de concluir todas as páginas restantes no assistente. Selecione Agenda para criar a nova tabela particionada em um momento predeterminado no futuro.
Se selecionar Criar script, as seguintes opções estão disponíveis em Opções de script:
Script para arquivar
Gera o script como um arquivo.sql
. Insira um nome de ficheiro e um local na caixa Nome do ficheiro ou selecione Procurar para abrir a caixa de diálogo Localização do Ficheiro de Script. Em Salvar como, selecione texto Unicode ou texto ANSI.script para a área de transferência
Salva o script na Área de Transferência.script para nova janela de consulta
Gera o script para uma nova janela do Editor de Consultas. Esta é a seleção padrão.Se você selecionar Agendar, selecione Alterar agendamento.
Na caixa de diálogo Nova Agenda de Trabalho, na caixa Nome, insira o nome da agenda de trabalho.
Na lista Tipo de programação, selecione o tipo de programação:
Iniciar automaticamente quando o SQL Server Agent inicia
Inicie sempre que as CPUs ficarem ociosas
Recorrente. Selecione esta opção se a nova tabela particionada for atualizada com novas informações regularmente.
Uma vez. Esta é a seleção padrão.
Marque ou desmarque a caixa de seleção Enabled para habilitar ou desabilitar o agendamento.
Se você selecionar recorrente :
Em Frequência, na lista Ocorre, especifique a frequência de ocorrência:
Se você selecionar Diário , na caixa Recorre a cada, insira a frequência com que a agenda de trabalho se repete em dias.
Se selecionar Semanal, na caixa Repete-se a cada, insira o número de semanas em que a agenda de trabalho se repete. Selecione o dia ou dias da semana em que o cronograma de trabalho é executado.
Se selecionar Mensal, selecione Dia ou O.
Se selecionar Dia, insira tanto a data do mês em que deseja que o cronograma de tarefas seja executado quanto a frequência com que o cronograma de tarefas se repete em meses. Por exemplo, se você quiser que a agenda de trabalho seja executada no dia 15 do mês a cada dois meses, selecione Dia e digite "15" na primeira caixa e "2" na segunda caixa. O maior número permitido na segunda caixa é "99".
Se você selecionar O, selecione o dia específico da semana dentro do mês em que deseja que a agenda de trabalho seja executada e com que frequência a agenda de trabalho se repete em meses. Por exemplo, se pretender que o agendamento de trabalho seja executado no último dia útil do mês de dois em dois meses, selecione Dia, selecione último na primeira lista e dia útil na segunda lista e, em seguida, introduza "2" na última caixa. Você também pode selecionar primeira, segunda, terceiraou quarta, bem como dias úteis específicos (por exemplo: domingo ou quarta-feira) das duas primeiras listas. O maior número permitido na última caixa é "99".
Em Frequência diária, especifique a frequência com que a agenda de trabalho se repete no dia em que a agenda de tarefas é executada:
Se selecionar Ocorre uma vez em, insira a hora específica do dia em que a programação de tarefas deve ser executada na caixa Ocorre uma vez em. Insira a hora, o minuto e o segundo do dia, bem como a manhã ou a noite.
Se selecionar Ocorre todos os, especifique com que frequência o agendamento de trabalho é executado no dia escolhido em Frequência. Por exemplo, se desejar que a agenda de trabalho se repita a cada 2 horas durante o dia em que a agenda de trabalho é executada, selecione Ocorre a cada, digite "2" na primeira caixa e selecione hora(s) na lista. Nesta lista, você também pode selecionar minuto(s) e segundo(s). O maior número permitido na primeira caixa é "100".
Na caixa Começando em, insira a hora em que o agendamento de trabalho deve iniciar. Na caixa Terminando em, insira a hora em que a agenda de trabalho deve parar de se repetir. Insira a hora, o minuto e o segundo do dia, bem como a manhã ou a noite.
Em Duração, em Data de início, insira a data em que você deseja que a agenda de trabalho comece a ser executada. Selecione Data de término ou Sem data de término para indicar quando a agenda de trabalho deve parar de ser executada. Se selecionar Data de término, insira a data em que pretende que a programação de trabalho deixe de ser executada.
Se selecionar One Time, sob ocorrência única, na caixa Data, insira a data em que o agendamento de trabalho será executado. Na caixa de tempo , insira a hora em que a programação de tarefas será executada. Insira a hora, o minuto e o segundo do dia, bem como a manhã ou a noite.
Em Resumo, em Descrição, verifique se todas as definições do agendamento de trabalhos estão corretas.
Selecione OK.
Depois de concluir esta página, selecione Avançar.
Na página Resumo da Revisão, em Revisar suas seleções, expanda todas as opções disponíveis para verificar se todas as configurações de partição estão corretas. Se tudo estiver conforme o esperado, selecione Concluir.
Na página de Progresso do Assistente para Criar Partição, monitore as informações de status sobre as ações do Assistente para Criar Partição. Dependendo das opções selecionadas no assistente, a página de progresso pode conter uma ou mais ações. A caixa superior exibe o estado geral do assistente e o número de mensagens de estado, erro e aviso que o assistente recebeu.
As seguintes opções estão disponíveis na página de progresso do Assistente para Criar Partição:
Detalhes
Fornece a ação, o status e todas as mensagens retornadas da ação executada pelo assistente.Ação
Especifica o tipo e o nome de cada ação.Status
Indica se a ação do assistente como um todo retornou o valor de Êxito ou Falha.Mensagem
Fornece quaisquer mensagens de erro ou aviso que são retornadas do processo.Relatório
Cria um relatório que contém os resultados do Assistente de Criação de Partição. As opções são Exibir relatório, Guardar relatório num ficheiro, Copiar relatório para a área de trabalhoe Enviar relatório por email.Ver relatório
Abre a caixa de diálogo Visualizar Relatório, que contém um relatório de texto do progresso do Assistente de Criação de Partição.Salvar relatório no arquivo
Abre a caixa de diálogo Guardar relatório como.Copiar relatório para a área de transferência
Copia os resultados do relatório de progresso do assistente para a Área de Transferência.Enviar relatório como e-mail
Copia os resultados do relatório de progresso do assistente para uma mensagem de e-mail.Quando terminar, selecione Fechar.
O Assistente para Criar Partição cria a função e o esquema de partição e, em seguida, aplica o particionamento à tabela especificada. Para verificar o particionamento da tabela, no Pesquisador de Objetos, clique com o botão direito do mouse na tabela e selecione Propriedades. Selecione a página de Armazenamento . A página exibe informações como o nome da função e esquema de partição e o número de partições.
Consultar metadados de tabelas e índices particionados
Você pode consultar metadados para determinar se uma tabela está particionada, os pontos de limite para uma tabela particionada, a coluna de particionamento para uma tabela particionada, o número de linhas em cada partição e se de compactação de dados foi implementada em partições.
Determinar se uma tabela está particionada
A consulta a seguir retorna uma ou mais linhas se a tabela PartitionTable
estiver particionada ou se quaisquer índices não clusterizados na tabela forem particionados. Se a tabela não estiver particionada e nenhum dos índices não clusterizados na tabela for particionado, nenhuma linha será retornada.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, *
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.[object_id] = i.[object_id]
JOIN sys.partition_schemes ps
ON i.data_space_id = ps.data_space_id
WHERE t.name = 'PartitionTable';
GO
Determinar os valores de limite para uma tabela particionada
A consulta a seguir retorna os valores de limite para cada partição na tabela PartitionTable
.
A consulta utiliza a coluna type
na tabela sys.indexes para devolver apenas informações sobre o índice clusterizado da tabela ou sobre a tabela base caso esta seja um heap . Para incluir quaisquer índices não agrupados particionados nos resultados da consulta, remova ou comente a anotação AND i.type <= 1
.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
p.partition_number, p.partition_id, i.data_space_id, f.function_id, f.type_desc,
r.boundary_id, r.value AS BoundaryValue
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.object_id = i.object_id
JOIN sys.partitions AS p
ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.partition_schemes AS s
ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
ON f.function_id = r.function_id and r.boundary_id = p.partition_number
WHERE
t.name = 'PartitionTable'
AND i.type <= 1
ORDER BY SchemaName, t.name, i.name, p.partition_number;
Determinar a coluna de partição para uma tabela particionada
A consulta a seguir retorna o nome da coluna de particionamento para a tabela PartitionTable
.
A consulta utiliza a coluna type
em sys.indexes para retornar apenas informações sobre o índice clusterizado da tabela, ou sobre a tabela base se a tabela for um heap . Para incluir quaisquer índices não clusterizados particionados nos resultados da consulta, remova ou comente AND i.type <= 1
da consulta.
SELECT
t.[object_id] AS ObjectID
, SCHEMA_NAME(t.schema_id) AS SchemaName
, t.name AS TableName
, ic.column_id AS PartitioningColumnID
, c.name AS PartitioningColumnName
, i.name as IndexName
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.[object_id] = i.[object_id]
AND i.[type] <= 1 -- clustered index or a heap
JOIN sys.partition_schemes AS ps
ON ps.data_space_id = i.data_space_id
JOIN sys.index_columns AS ic
ON ic.[object_id] = i.[object_id]
AND ic.index_id = i.index_id
AND ic.partition_ordinal >= 1 -- because 0 = non-partitioning column
JOIN sys.columns AS c
ON t.[object_id] = c.[object_id]
AND ic.column_id = c.column_id
WHERE t.name = 'PartitionTable';
GO
Determinar as linhas que descrevem o intervalo possível de valores em cada partição.
A consulta a seguir retorna as linhas por partição para a tabela PartitionTable
e uma descrição dos 'operadores de comparação' para a função de partição em uso.
Consulta original fornecida por Kalen Delaney.
A consulta utiliza a coluna type
no sys.indexes para devolver apenas informações sobre o índice clusterizado da tabela ou sobre a tabela base se a tabela for um heap . Para incluir quaisquer índices não clusterizados particionados nos resultados da consulta, remova ou comente AND i.type <= 1
da consulta.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
p.partition_number AS PartitionNumber, f.name AS PartitionFunctionName, p.rows AS Rows, rv.value AS BoundaryValue,
CASE WHEN ISNULL(rv.value, rv2.value) IS NULL THEN 'N/A'
ELSE
CASE WHEN f.boundary_value_on_right = 0 AND rv2.value IS NULL THEN '>='
WHEN f.boundary_value_on_right = 0 THEN '>'
ELSE '>='
END + ' ' + ISNULL(CONVERT(varchar(64), rv2.value), 'Min Value') + ' ' +
CASE f.boundary_value_on_right WHEN 1 THEN 'and <'
ELSE 'and <=' END
+ ' ' + ISNULL(CONVERT(varchar(64), rv.value), 'Max Value')
END AS TextComparison
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.object_id = i.object_id
JOIN sys.partitions AS p
ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.partition_schemes AS s
ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
ON f.function_id = r.function_id and r.boundary_id = p.partition_number
LEFT JOIN sys.partition_range_values AS rv
ON f.function_id = rv.function_id
AND p.partition_number = rv.boundary_id
LEFT JOIN sys.partition_range_values AS rv2
ON f.function_id = rv2.function_id
AND p.partition_number - 1= rv2.boundary_id
WHERE
t.name = 'PartitionTable'
AND i.type <= 1
ORDER BY t.name, p.partition_number;
A coluna TextComparison
descreve o intervalo possível de valores em cada partição com base na definição da função de partição . Aqui está uma exibição de resultados de exemplo da consulta:
Nome do esquema | NomeTabela | IndexName | Número de partição | PartitionFunctionName | linhas | Valor de Limite | TextComparison |
---|---|---|---|---|---|---|---|
DBO | Tabela de partição | PK_TabelaDePartição | 1 | PFTest | 0 | 2022-03-01 00:00:00.000 | >= Valor mínimo e < 1 de março de 2022 12:00 |
DBO | Tabela de partição | PK_PartitionTable | 2 | PFTest | 2 | 2022-04-01 00:00:00.000 | >= 1 de março de 2022 12:00 e < 1 de abril de 2022 12:00 |
DBO | Tabela de partição | PK_PartitionTable | 3 | PFTest | 1 | 01-05-2022 00:00:00.000 | >= 1 de abril de 2022 12:00 e < 1 de maio de 2022 12:00 |
DBO | Tabela de partição | PK_PartitionTable | 4 | PFTest | 0 | 2022-06-01 00:00:00.000 | >= 1 de maio de 2022 12:00 e < 1 de junho de 2022 12:00 |
DBO | Tabela de partição | PK_PartitionTable | 5 | PFTest | 1 | 2022-07-01 00:00:00.000 | >= 1 de junho de 2022 12:00 e < 1 de julho de 2022 12:00 |
DBO | Tabela de partição | PK_PartitionTable | 6 | PFTest | 0 | NULO | >= 1 de julho de 2022 00:00 e < Valor Máximo |
Limitações
Saiba mais sobre limitações, assim como considerações de desempenho para o particionamento em Limitações
Conteúdo relacionado
- Tabelas e índices particionados
- Dimensionamento em escala com o Banco de Dados SQL do Azure
- Particionamento de tabelas em pool SQL dedicado
- Guia de arquitetura e design de índices do SQL Server e do Azure SQL
- ALTER DATABASE (Transact-SQL) Opções de ficheiro e grupo de ficheiros
- CRIE FUNÇÃO DE PARTIÇÃO (Transact-SQL)
- CRIAR ESQUEMA DE PARTIÇÃO (Transact-SQL)
- CRIAR TABELA (Transact-SQL)