Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Bases";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

Para baixo

Interbase, problema com um grande número de registros Encontre agências semelhantes


Sergy Ivanec   (2004-11-03 11:05) [0]

Em geral, ocorreu um erro. Eu tentei de tudo.
Existe ibdatabase, ibtransaction, ibquery, uma tabela com 3 registros e esse código (antes desse código eu fecho outra conexão com o banco de dados - não me lembro quanto a versão ib fornecida com o delphi suporta conexões):

ibd: = Tibdatabase.Create (form6);
ibt: = Tibtransaction.Create (formulário6);
ibt.DefaultDatabase: = ibd;
ibd.DefaultTransaction: = ibt;
ibd.Params.Add ("nome_do_usuário = sysdba");
ibd.Params.Add ("password = masterkey");
ibd.Params.Add ("lc_ctype = WIN1251");
ibd.LoginPrompt: = false;
ibd.DatabaseName: = "nome do banco de dados";
ibd.Connected: = true;
ibt.Active: = true;
 
ibs: = Tibquery.Create (formulário6);
ibs.Database: = ibd;

// tal pedido
ibs.SQL.Add ("selecione max (id) como meio da tablica");

ibs.Open;
if ibs.Fields [0] .Value <> null, então
id: = ibs.FieldByName ("mid"). Asinteger + 1;

ibt.Commit; // talvez não seja necessário confirmar
ibs.Close;
ibs.Destroy;
ibt.Destroy;
ibd.Destroy;

O que está errado aqui é completamente incompreensível. Além disso, outros componentes começaram a emitir um erro com esse número de entradas.



Mike Kouzmine ©   (2004-11-03 11:09) [1]

Qual é o erro? "Muitos registros"? E você não pode usar gatilhos para esse fim?



Sergey13 ©   (2004-11-03 11:12) [2]

> id: =
O que é id?



Карелин Артем ©   (2004-11-03 11:20) [3]

Número não tem nada a ver com isso. As pernas da solicitação crescem.



Карелин Артем ©   (2004-11-03 11:22) [4]

Correção: toda a base?



Sergy Ivanec   (2004-11-03 11:42) [5]

Erro de violação de acesso ... começou a falhar
ibdataset - fonte de dados - dbgrid - ao tentar exibir tudo
3000000 de entradas.
Quanto a se toda a base - vou verificar, mas aparentemente sim. Para Para obter esse valor, usarei o gatilho.



Danilka ©   (2004-11-03 11:43) [6]

Offtopic:
1. Se id é um campo-chave, então o valor para ele ainda é melhor para gerar um gerador. E obtenha o último valor gerado do gerador (embora eu não tenha idéia do por que isso é necessário).
2. Nesta consulta, "selecione max (id) no meio da tablica", se o campo id não tiver um índice com classificação reversa (não crescente, mas decrescente), essa consulta irá percorrer todos os três registros milen ...
3. Bem, em geral, muitas coisas podem ser escritas nesse código, tanto na conta de destruição quanto no ID da conta: = ibs.FieldByName ("mid"). Asinteger + 1 com acesso multiusuário, etc. etc.

E sobre o tópico, em que local exato ocorre o erro?



Danilka ©   (2004-11-03 11:45) [7]

[5] Sergy Ivanec (03.11.04/11/42 XNUMX:XNUMX)
> ibdataset - datasource - dbgrid - ao tentar exibir tudo
> 3000000 de entradas.

brr.
diga-me, querido amigo, por que você precisa de três registros em uma grade ???
se você olhar para cada registro por apenas 1 segundo, o tempo todo, levará mais de um mês para exibir todos os registros ...
:)



msguns ©   (2004-11-03 11:45) [8]

Aparentemente, algo como "número do documento atual" é calculado como o mais antigo, aumentado em 1. A solicitação é normal, embora eu, por exemplo, eu aborde essas coisas na HP, que pode calcular o número tanto em geral quanto na entrada especificada Parâmetro do ano e até o tipo de documento (mas isso é essencial para os documentos).
Se não são documentos, por que não usar geradores?
Em geral, eu gostaria de saber mais sobre onde o código ocorre.

Sim, e novamente: o que é isso

if ibs.Fields [0] .Value <> null, então    

?

Talvez seja mais fácil

se ibs.RecordCount> 0, então



Danilka ©   (2004-11-03 11:52) [9]

[8] msguns © (03.11.04 11: 45)
Quanto maior o número de usuários, maior a probabilidade de que dois ao mesmo tempo obtenham o mesmo valor usando max + 1 e, portanto, um deles corrigirá o erro.



msguns ©   (2004-11-03 11:59) [10]

> Danilka © (03.11.04 11: 52) [9]
>> [8] msguns © (03.11.04 11: 45)
> Quanto maior o número de usuários, maior a probabilidade de que dois ao mesmo tempo obtenham o mesmo valor usando max + 1 e, portanto, um deles corrigirá o erro.

Quando se trata de recebimento automático sem chave campos de registros (e o número do documento é exatamente isso), ninguém “corrigirá” o erro durante a gravação. 2 números de conta idênticos (fatura de remessa, pagamento etc.) - sim, eles serão, mas
Em primeiro lugar, isso pode ser corrigido após confirmar e reabrir o ND (por exemplo, antes de imprimir),
em segundo lugar, é improvável que duas faturas sejam adicionadas ao mesmo tempo, mesmo com o trabalho paralelo de cobrança de 2 computadores (existe experiência), porque O número é determinado no momento em que o cabeçalho é gravado na tabela de cabeçalhos.
terceiro, está tudo bem. Em nenhum lugar da legislação diz que NÃO POSSO ter 2 (10, 20, 100) conhecimentos de transporte (por exemplo) com o número 1.



Карелин Артем ©   (2004-11-03 12:02) [11]

Sergy Ivanec (03.11.04/11/42 5:XNUMX) [XNUMX]
E quanta memória é necessária para gerar gravações de 3M para a grade? Provavelmente mais de 2G, acima do qual AV passa.



Sergey_Masloff   (2004-11-03 16:26) [12]

Karelin Artem © (03.11.04 12: 02) [11]
> Provavelmente mais de 2G, acima do qual o AV
Delírio



Johnmen ©   (2004-11-03 16:38) [13]

> msguns © (03.11.04 11: 45) [8]
> Talvez seja mais fácil
> se ibs.RecordCount> 0 então

Talvez mais fácil. Mas definitivamente errado ... :)



msguns ©   (2004-11-03 17:31) [14]

> Johnmen © (03.11.04 16: 38) [13]

Por que



Johnmen ©   (2004-11-03 17:55) [15]

> msguns © (03.11.04 17: 31) [14]

Porque a consulta [0] sempre retorna 1 registro.



YurikGL ©   (2004-11-03 22:31) [16]

Gostaria de saber quanto tempo o computador pensa antes dos problemas do AV?



Sergy Ivanec   (2004-11-04 01:13) [17]

Tudo foi resolvido ... como tudo era estúpido - horror. Eu precisava do freereport - fui forçado a mudar para o 6 delphi, uma de suas primeiras versões, e depois disso começaram as falhas do IBX. Em todos os lugares AV. Absolutamente por acidente, já em pânico - 5 dias atormentados - compilou o projeto às 7. E MILAGRE - tudo funciona. E solicitações, transações e conjuntos de dados. Obrigado a todos pela ajuda.
Ajustei os gatilhos e escrevi o procedimento - em geral, um milagre funciona.



Карелин Артем ©   (2004-11-04 13:39) [18]

Sergey_Masloff (03.11.04 16: 26) [12]
O que significa "Brad" ?????? Tentei ??????
Faça esse conjunto de dados e vá até o final (ou fetchall).



Johnmen ©   (2004-11-04 14:07) [19]

Karelin Artem © (04.11.04 13: 39) [18]

Apenas imaginando de onde vem esse número. 2 ?



Карелин Артем ©   (2004-11-04 14:23) [20]

Johnmen © (04.11.04 14: 07) [19]
Da experiência pessoal e da arquitetura de 32 bits



Sergey_Masloff   (2004-11-04 21:37) [21]

Karelin Artem © (04.11.04 13: 39) [18]
> Sergey_Masloff (03.11.04 16: 26) [12]
> O que significa "Brad" ?????? Tentei ??????
> Crie esse conjunto de dados e vá até o final (bom ou bem-sucedido).
Isso significa que bobagem. Não estou cansado de direcionar esses volumes para um conjunto de dados, mas peguei outros similares para outros caras gostosos. O cache do conjunto de dados terminará MUITO antes dos 2 GB. Dependendo do componente de resposta, de alguns megabytes a várias dezenas de megabytes.
Verifique você mesmo.



Карелин Артем ©   (2004-11-11 09:41) [22]

Sergey_Masloff (04.11.04 21: 37) [21]
Qual cache? Alocação de memória elementar para algo da pilha. Tudo depende do desejo do Windows de alocar memória. Os números em alguns megabytes são simplesmente ridículos para qualquer eixo. Algumas dúzias ??
Isso está mais próximo se estamos falando do Windows 9X e do pequeno tamanho de RAM. Nos meus 98, é difícil obter um programa (contar conjunto de dados) com mais de 400 a 500 megas.
Em 2000, idealmente, o programa recebe honestamente os dois shows. Na prática, no entanto, geralmente há falta de memória e um tamanho de arquivo de paginação muito limitado na parte superior.
Sobre o cheque: verificado repetidamente. Realizo tarefas que exigem muita memória há muito tempo.
Para não ser infundada, aqui estão as provas:
http://blackrain.pisem.net/before.jpg - это читается большой набор данных.
http://blackrain.pisem.net/after.jpg - это он был закрыт (освободилась занятая набором данных память.)
Como você pode ver nas figuras, a diferença é um pouco maior que "várias dezenas de megabytes".
--------------------------
1) Eu não escrevi o programa, porque sei que a ferramenta usada no teste foi escrita em Delphi.
2) até 2 GB não trouxeram pelo motivo de o computador em questão ser bastante fraco (128 RAM, parafuso lento, processador P3-celeron). Demora muito tempo para esperar por esses 2 shows.



DSKalugin ©   (2004-11-11 11:48) [23]

Vocês não estão olhando assim
ibt: = Tibtransaction.Create (form6);
Faça isso
ibt: = Tibtransaction.Create (zero);
e passe NIL para todos os outros se você criar e excluir manualmente.
Após a destruição do Form6, o AV aparecerá, porque tentará destruir o já destruído
ibs.Destroy;
ibt.Destroy;
ibd.Destroy;



Страницы: 1 filial inteira

Fórum: "Bases";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

em cima





Memória: 0.65 MB
Hora: 0.085 c
1-1101582242
Onefragleft
2004-11-27 22:04
2004.12.12
Criando um manipulador de eventos no tempo de execução.


6-1096904375
Yermek
2004-10-04 19:39
2004.12.12
Área de Trabalho Remota


9-1092288740
OSG
2004-08-12 09:32
2004.12.12
ÓMEGA


3-1100348476
Jiurasd
2004-11-13 15:21
2004.12.12
Eu não posso mudar a tabela do banco de dados


3-1100240523
sergeii
2004-11-12 09:22
2004.12.12
Exportar v Excel





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese Romeno Russa sérvio Slovak esloveno Espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol