-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance Issue on Insert #2630
Comments
The Npgsql provider indeed sends all of the updates for SaveChanges in a single roundtrip. If an error occurs somewhere (e.g. at the start), everything is still sent to the server. Rather than splitting to multiple SaveChanges, you can simply control the maximum batch size as described here). Doing smaller batches sacrifices performance in the successful case (due to more roundtrips) so that the exceptional case is faster. |
Thank you for fast response, and yes - control of the maximum batch size may help in general. Regarding my situation, when first insert command is failing - there no need to send other operations (they could not succeed due to reference over first record that is failed). So it would be good if ef core or Postgres client identify such cases and fail fast. |
I've opened dotnet/efcore#30182 to discuss this at the general EF level, thanks. I'll go ahead and close this as I think there's no further to do in Npgsql specifically, but don't hesitate to post back here etc. |
There is huge time delay between call SaveChangesAsync and raised exception (around 2 minutes)
Using
I'm creating a record in database.
This record also need to insert lots of related records in another table (around 114 records).
When insert is success for all records - everything is ok.
Performance issue appears when fail to insert first record.
First log message appears immediately:
[12:45:10 ERR] Failed executing DbCommand (37ms) [Parameters=[@p0='?' (DbType = Guid), @p1='?' (DbType = Guid), @p2='?' (DbType = Guid), @p3='?' (DbType = Object), @p4='?' (DbType = DateTime), @p5='?' (DbType = Guid), @p6='?', @p7='?' (DbType = Boolean), @p8='?' (DbType = Boolean), @p9='?' (DbType = Boolean), @p10='?' (DbType = Boolean), @p11='?' (DbType = DateTime), @p12='?' (DbType = Guid), @p13='?', @p14='?', @p15='?' (DbType = Guid), @p16='?' (DbType = Guid), @p17='?', @p18='?' (DbType = Boolean), @p19='?', @p20='?' (DbType = Guid), @p21='?' (DbType = Guid), @p22='?', @p23='?' (DbType = Boolean), @p24='?', @p25='?' (DbType = Guid), @p26='?' (DbType = Guid), @p27='?', @p28='?' (DbType = Boolean), @p29='?', @p30='?' (DbType = Guid), @p31='?' (DbType = Guid), @p32='?', @p33='?' (DbType = Boolean), @p34='?', @p35='?' (DbType = Guid), @p36='?' (DbType = Guid), @p37='?', @p38='?' (DbType = Boolean), @p39='?', @p40='?' (DbType = Guid), @p41='?' (DbType = Guid), @p42='?', @p43='?' (DbType = Boolean), @p44='?', @p45='?' (DbType = Guid), @p46='?' (DbType = Guid), @p47='?', @p48='?' (DbType = Boolean), @p49='?', @p50='?' (DbType = Guid), @p51='?' (DbType = Guid), @p52='?', @p53='?' (DbType = Boolean), @p54='?', @p55='?' (DbType = Guid), @p56='?' (DbType = Guid), @p57='?', @p58='?' (DbType = Boolean), @p59='?', @p60='?' (DbType = Guid), @p61='?' (DbType = Guid), @p62='?', @p63='?' (DbType = Boolean), @p64='?', @p65='?' (DbType = Guid), @p66='?' (DbType = Guid), @p67='?', @p68='?' (DbType = Boolean), @p69='?', @p70='?' (DbType = Guid), @p71='?' (DbType = Guid), @p72='?', @p73='?' (DbType = Boolean), @p74='?', @p75='?' (DbType = Guid), @p76='?' (DbType = Guid), @p77='?', @p78='?' (DbType = Boolean), @p79='?', @p80='?' (DbType = Guid), @p81='?' (DbType = Guid), @p82='?', @p83='?' (DbType = Boolean), @p84='?', @p85='?' (DbType = Guid), @p86='?' (DbType = Guid), @p87='?', @p88='?' (DbType = Boolean), @p89='?', @p90='?' (DbType = Guid), @p91='?' (DbType = Guid), @p92='?', @p93='?' (DbType = Boolean), @p94='?', @p95='?' (DbType = Guid), @p96='?' (DbType = Guid), @p97='?', @p98='?' (DbType = Boolean), @p99='?', @p100='?' (DbType = Guid), @p101='?' (DbType = Guid), @p102='?', @p103='?' (DbType = Boolean), @p104='?', @p105='?' (DbType = Guid), @p106='?' (DbType = Guid), @p107='?', @p108='?' (DbType = Boolean), @p109='?', @p110='?' (DbType = Guid), @p111='?' (DbType = Guid), @p112='?', @p113='?' (DbType = Boolean), @p114='?', @p115='?' (DbType = Guid), @p116='?' (DbType = Guid), @p117='?', @p118='?' (DbType = Boolean), @p119='?', @p120='?' (DbType = Guid), @p121='?' (DbType = Guid), @p122='?', @p123='?' (DbType = Boolean), @p124='?', @p125='?' (DbType = Guid), @p126='?' (DbType = Guid), @p127='?', @p128='?' (DbType = Boolean), @p129='?', @p130='?' (DbType = Guid), @p131='?' (DbType = Guid), @p132='?', @p133='?' (DbType = Boolean), @p134='?', @p135='?' (DbType = Guid), @p136='?' (DbType = Guid), @p137='?', @p138='?' (DbType = Boolean), @p139='?', @p140='?' (DbType = Guid), @p141='?' (DbType = Guid), @p142='?', @p143='?' (DbType = Boolean), @p144='?', @p145='?' (DbType = Guid), @p146='?' (DbType = Guid), @p147='?', @p148='?' (DbType = Boolean), @p149='?', @p150='?' (DbType = Guid), @p151='?' (DbType = Guid), @p152='?', @p153='?' (DbType = Boolean), @p154='?', @p155='?' (DbType = Guid), @p156='?' (DbType = Guid), @p157='?', @p158='?' (DbType = Boolean), @p159='?', @p160='?' (DbType = Guid), @p161='?' (DbType = Guid), @p162='?', @p163='?' (DbType = Boolean), @p164='?', @p165='?' (DbType = Guid), @p166='?' (DbType = Guid), @p167='?', @p168='?' (DbType = Boolean), @p169='?', @p170='?' (DbType = Guid), @p171='?' (DbType = Guid), @p172='?', @p173='?' (DbType = Boolean), @p174='?', @p175='?' (DbType = Guid), @p176='?' (DbType = Guid), @p177='?', @p178='?' (DbType = Boolean), @p179='?', @p180='?' (DbType = Guid), @p181='?' (DbType = Guid), @p182='?', @p183='?' (DbType = Boolean), @p184='?', @p185='?' (DbType = Guid), @p186='?' (DbType = Guid), @p187='?', @p188='?' (DbType = Boolean), @p189='?', @p190='?' (DbType = Guid), @p191='?' (DbType = Guid), @p192='?', @p193='?' (DbType = Boolean), @p194='?', @p195='?' (DbType = Guid), @p196='?' (DbType = Guid), @p197='?', @p198='?' (DbType = Boolean), @p199='?', @p200='?' (DbType = Guid), @p201='?' (DbType = Guid), @p202='?', @p203='?' (DbType = Boolean), @p204='?', @p205='?' (DbType = Guid), @p206='?' (DbType = Guid), @p207='?', @p208='?' (DbType = Boolean), @p209='?', @p210='?' (DbType = Guid), @p211='?' (DbType = Guid), @p212='?', @p213='?' (DbType = Boolean), @p214='?', @p215='?' (DbType = Guid), @p216='?' (DbType = Guid), @p217='?', @p218='?' (DbType = Boolean), @p219='?', @p220='?' (DbType = Guid), @p221='?' (DbType = Guid), @p222='?', @p223='?' (DbType = Boolean), @p224='?', @p225='?' (DbType = Guid), @p226='?' (DbType = Guid), @p227='?', @p228='?' (DbType = Boolean), @p229='?', @p230='?' (DbType = Guid), @p231='?' (DbType = Guid), @p232='?', @p233='?' (DbType = Boolean), @p234='?', @p235='?' (DbType = Guid), @p236='?' (DbType = Guid), @p237='?', @p238='?' (DbType = Boolean), @p239='?', @p240='?' (DbType = Guid), @p241='?' (DbType = Guid), @p242='?', @p243='?' (DbType = Boolean), @p244='?', @p245='?' (DbType = Guid), @p246='?' (DbType = Guid), @p247='?', @p248='?' (DbType = Boolean), @p249='?', @p250='?' (DbType = Guid), @p251='?' (DbType = Guid), @p252='?', @p253='?' (DbType = Boolean), @p254='?', @p255='?' (DbType = Guid), @p256='?' (DbType = Guid), @p257='?', @p258='?' (DbType = Boolean), @p259='?', @p260='?' (DbType = Guid), @p261='?' (DbType = Guid), @p262='?', @p263='?' (DbType = Boolean), @p264='?', @p265='?' (DbType = Guid), @p266='?' (DbType = Guid), @p267='?', @p268='?' (DbType = Boolean), @p269='?', @p270='?' (DbType = Guid), @p271='?' (DbType = Guid), @p272='?', @p273='?' (DbType = Boolean), @p274='?', @p275='?' (DbType = Guid), @p276='?' (DbType = Guid), @p277='?', @p278='?' (DbType = Boolean), @p279='?', @p280='?' (DbType = Guid), @p281='?' (DbType = Guid), @p282='?', @p283='?' (DbType = Boolean), @p284='?', @p285='?' (DbType = Guid), @p286='?' (DbType = Guid), @p287='?', @p288='?' (DbType = Boolean), @p289='?', @p290='?' (DbType = Guid), @p291='?' (DbType = Guid), @p292='?', @p293='?' (DbType = Boolean), @p294='?', @p295='?' (DbType = Guid), @p296='?' (DbType = Guid), @p297='?', @p298='?' (DbType = Boolean), @p299='?', @p300='?' (DbType = Guid), @p301='?' (DbType = Guid), @p302='?', @p303='?' (DbType = Boolean), @p304='?', @p305='?' (DbType = Guid), @p306='?' (DbType = Guid), @p307='?', @p308='?' (DbType = Boolean), @p309='?', @p310='?' (DbType = Guid), @p311='?' (DbType = Guid), @p312='?', @p313='?' (DbType = Boolean), @p314='?', @p315='?' (DbType = Guid), @p316='?' (DbType = Guid), @p317='?', @p318='?' (DbType = Boolean), @p319='?', @p320='?' (DbType = Guid), @p321='?' (DbType = Guid), @p322='?', @p323='?' (DbType = Boolean), @p324='?', @p325='?' (DbType = Guid), @p326='?' (DbType = Guid), @p327='?', @p328='?' (DbType = Boolean), @p329='?', @p330='?' (DbType = Guid), @p331='?' (DbType = Guid), @p332='?', @p333='?' (DbType = Boolean), @p334='?', @p335='?' (DbType = Guid), @p336='?' (DbType = Guid), @p337='?', @p338='?' (DbType = Boolean), @p339='?', @p340='?' (DbType = Guid), @p341='?' (DbType = Guid), @p342='?', @p343='?' (DbType = Boolean), @p344='?', @p345='?' (DbType = Guid), @p346='?' (DbType = Guid), @p347='?', @p348='?' (DbType = Boolean), @p349='?', @p350='?' (DbType = Guid), @p351='?' (DbType = Guid), @p352='?', @p353='?' (DbType = Boolean), @p354='?', @p355='?' (DbType = Guid), @p356='?' (DbType = Guid), @p357='?', @p358='?' (DbType = Boolean), @p359='?', @p360='?' (DbType = Guid), @p361='?' (DbType = Guid), @p362='?', @p363='?' (DbType = Boolean), @p364='?', @p365='?' (DbType = Guid), @p366='?' (DbType = Guid), @p367='?', @p368='?' (DbType = Boolean), @p369='?', @p370='?' (DbType = Guid), @p371='?' (DbType = Guid), @p372='?', @p373='?' (DbType = Boolean), @p374='?', @p375='?' (DbType = Guid), @p376='?' (DbType = Guid), @p377='?', @p378='?' (DbType = Boolean), @p379='?', @p380='?' (DbType = Guid), @p381='?' (DbType = Guid), @p382='?', @p383='?' (DbType = Boolean), @p384='?', @p385='?' (DbType = Guid), @p386='?' (DbType = Guid), @p387='?', @p388='?' (DbType = Boolean), @p389='?', @p390='?' (DbType = Guid), @p391='?' (DbType = Guid), @p392='?', @p393='?' (DbType = Boolean), @p394='?', @p395='?' (DbType = Guid), @p396='?' (DbType = Guid), @p397='?', @p398='?' (DbType = Boolean), @p399='?', @p400='?' (DbType = Guid), @p401='?' (DbType = Guid), @p402='?', @p403='?' (DbType = Boolean), @p404='?', @p405='?' (DbType = Guid), @p406='?' (DbType = Guid), @p407='?', @p408='?' (DbType = Boolean), @p409='?', @p410='?' (DbType = Guid), @p411='?' (DbType = Guid), @p412='?', @p413='?' (DbType = Boolean), @p414='?', @p415='?' (DbType = Guid), @p416='?' (DbType = Guid), @p417='?', @p418='?' (DbType = Boolean), @p419='?', @p420='?' (DbType = Guid), @p421='?' (DbType = Guid), @p422='?', @p423='?' (DbType = Boolean), @p424='?', @p425='?' (DbType = Guid), @p426='?' (DbType = Guid), @p427='?', @p428='?' (DbType = Boolean), @p429='?', @p430='?' (DbType = Guid), @p431='?' (DbType = Guid), @p432='?', @p433='?' (DbType = Boolean), @p434='?', @p435='?' (DbType = Guid), @p436='?' (DbType = Guid), @p437='?', @p438='?' (DbType = Boolean), @p439='?', @p440='?' (DbType = Guid), @p441='?' (DbType = Guid), @p442='?', @p443='?' (DbType = Boolean), @p444='?', @p445='?' (DbType = Guid), @p446='?' (DbType = Guid), @p447='?', @p448='?' (DbType = Boolean), @p449='?', @p450='?' (DbType = Guid), @p451='?' (DbType = Guid), @p452='?', @p453='?' (DbType = Boolean), @p454='?', @p455='?' (DbType = Guid), @p456='?' (DbType = Guid), @p457='?', @p458='?' (DbType = Boolean), @p459='?', @p460='?' (DbType = Guid), @p461='?' (DbType = Guid), @p462='?', @p463='?' (DbType = Boolean), @p464='?', @p465='?' (DbType = Guid), @p466='?' (DbType = Guid), @p467='?', @p468='?' (DbType = Boolean), @p469='?', @p470='?' (DbType = Guid), @p471='?' (DbType = Guid), @p472='?', @p473='?' (DbType = Boolean), @p474='?', @p475='?' (DbType = Guid), @p476='?' (DbType = Guid), @p477='?', @p478='?' (DbType = Boolean), @p479='?', @p480='?' (DbType = Guid), @p481='?' (DbType = Guid), @p482='?', @p483='?' (DbType = Boolean), @p484='?', @p485='?' (DbType = Guid), @p486='?' (DbType = Guid), @p487='?', @p488='?' (DbType = Boolean), @p489='?', @p490='?' (DbType = Guid), @p491='?' (DbType = Guid), @p492='?', @p493='?' (DbType = Boolean), @p494='?', @p495='?' (DbType = Guid), @p496='?' (DbType = Guid), @p497='?', @p498='?' (DbType = Boolean), @p499='?', @p500='?' (DbType = Guid), @p501='?' (DbType = Guid), @p502='?', @p503='?' (DbType = Boolean), @p504='?', @p505='?' (DbType = Guid), @p506='?' (DbType = Guid), @p507='?', @p508='?' (DbType = Boolean), @p509='?', @p510='?' (DbType = Guid), @p511='?' (DbType = Guid), @p512='?', @p513='?' (DbType = Boolean), @p514='?', @p515='?' (DbType = Guid), @p516='?' (DbType = Guid), @p517='?', @p518='?' (DbType = Boolean), @p519='?', @p520='?' (DbType = Guid), @p521='?' (DbType = Guid), @p522='?', @p523='?' (DbType = Boolean), @p524='?', @p525='?' (DbType = Guid), @p526='?' (DbType = Guid), @p527='?', @p528='?' (DbType = Boolean), @p529='?', @p530='?' (DbType = Guid), @p531='?' (DbType = Guid), @p532='?', @p533='?' (DbType = Boolean), @p534='?', @p535='?' (DbType = Guid), @p536='?' (DbType = Guid), @p537='?', @p538='?' (DbType = Boolean), @p539='?', @p540='?' (DbType = Guid), @p541='?' (DbType = Guid), @p542='?', @p543='?' (DbType = Boolean), @p544='?', @p545='?' (DbType = Guid), @p546='?' (DbType = Guid), @p547='?', @p548='?' (DbType = Boolean), @p549='?', @p550='?' (DbType = Guid), @p551='?' (DbType = Guid), @p552='?', @p553='?' (DbType = Boolean), @p554='?', @p555='?' (DbType = Guid), @p556='?' (DbType = Guid), @p557='?', @p558='?' (DbType = Boolean), @p559='?', @p560='?' (DbType = Guid), @p561='?' (DbType = Guid), @p562='?', @p563='?' (DbType = Boolean), @p564='?', @p565='?' (DbType = Guid), @p566='?' (DbType = Guid), @p567='?', @p568='?' (DbType = Boolean), @p569='?', @p570='?' (DbType = Guid), @p571='?' (DbType = Guid), @p572='?', @p573='?' (DbType = Boolean), @p574='?', @p575='?' (DbType = Guid), @p576='?' (DbType = Guid), @p577='?', @p578='?' (DbType = Boolean), @p579='?', @p580='?' (DbType = Guid), @p581='?' (DbType = Guid), @p582='?', @p583='?' (DbType = Boolean), @p584='?'], CommandType='Text', CommandTimeout='300'] INSERT INTO configurations (firm_id, id, application_id, batch_configuration, created_at, created_by, created_by_user_name, is_batch, is_cleaned, is_default, is_deleted, last_updated_at, modified_by, modified_by_user_name, name) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14); INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p15, @p16, @p17, @p18, @p19) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p20, @p21, @p22, @p23, @p24) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p25, @p26, @p27, @p28, @p29) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p30, @p31, @p32, @p33, @p34) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p35, @p36, @p37, @p38, @p39) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p40, @p41, @p42, @p43, @p44) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p45, @p46, @p47, @p48, @p49) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p50, @p51, @p52, @p53, @p54) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p55, @p56, @p57, @p58, @p59) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p60, @p61, @p62, @p63, @p64) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p65, @p66, @p67, @p68, @p69) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p70, @p71, @p72, @p73, @p74) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p75, @p76, @p77, @p78, @p79) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p80, @p81, @p82, @p83, @p84) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p85, @p86, @p87, @p88, @p89) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p90, @p91, @p92, @p93, @p94) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p95, @p96, @p97, @p98, @p99) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p100, @p101, @p102, @p103, @p104) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p105, @p106, @p107, @p108, @p109) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p110, @p111, @p112, @p113, @p114) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p115, @p116, @p117, @p118, @p119) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p120, @p121, @p122, @p123, @p124) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p125, @p126, @p127, @p128, @p129) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p130, @p131, @p132, @p133, @p134) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p135, @p136, @p137, @p138, @p139) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p140, @p141, @p142, @p143, @p144) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p145, @p146, @p147, @p148, @p149) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p150, @p151, @p152, @p153, @p154) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p155, @p156, @p157, @p158, @p159) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p160, @p161, @p162, @p163, @p164) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p165, @p166, @p167, @p168, @p169) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p170, @p171, @p172, @p173, @p174) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p175, @p176, @p177, @p178, @p179) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p180, @p181, @p182, @p183, @p184) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p185, @p186, @p187, @p188, @p189) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p190, @p191, @p192, @p193, @p194) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p195, @p196, @p197, @p198, @p199) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p200, @p201, @p202, @p203, @p204) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p205, @p206, @p207, @p208, @p209) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p210, @p211, @p212, @p213, @p214) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p215, @p216, @p217, @p218, @p219) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p220, @p221, @p222, @p223, @p224) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p225, @p226, @p227, @p228, @p229) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p230, @p231, @p232, @p233, @p234) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p235, @p236, @p237, @p238, @p239) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p240, @p241, @p242, @p243, @p244) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p245, @p246, @p247, @p248, @p249) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p250, @p251, @p252, @p253, @p254) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p255, @p256, @p257, @p258, @p259) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p260, @p261, @p262, @p263, @p264) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p265, @p266, @p267, @p268, @p269) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p270, @p271, @p272, @p273, @p274) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p275, @p276, @p277, @p278, @p279) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p280, @p281, @p282, @p283, @p284) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p285, @p286, @p287, @p288, @p289) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p290, @p291, @p292, @p293, @p294) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p295, @p296, @p297, @p298, @p299) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p300, @p301, @p302, @p303, @p304) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p305, @p306, @p307, @p308, @p309) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p310, @p311, @p312, @p313, @p314) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p315, @p316, @p317, @p318, @p319) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p320, @p321, @p322, @p323, @p324) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p325, @p326, @p327, @p328, @p329) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p330, @p331, @p332, @p333, @p334) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p335, @p336, @p337, @p338, @p339) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p340, @p341, @p342, @p343, @p344) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p345, @p346, @p347, @p348, @p349) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p350, @p351, @p352, @p353, @p354) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p355, @p356, @p357, @p358, @p359) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p360, @p361, @p362, @p363, @p364) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p365, @p366, @p367, @p368, @p369) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p370, @p371, @p372, @p373, @p374) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p375, @p376, @p377, @p378, @p379) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p380, @p381, @p382, @p383, @p384) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p385, @p386, @p387, @p388, @p389) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p390, @p391, @p392, @p393, @p394) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p395, @p396, @p397, @p398, @p399) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p400, @p401, @p402, @p403, @p404) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p405, @p406, @p407, @p408, @p409) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p410, @p411, @p412, @p413, @p414) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p415, @p416, @p417, @p418, @p419) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p420, @p421, @p422, @p423, @p424) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p425, @p426, @p427, @p428, @p429) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p430, @p431, @p432, @p433, @p434) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p435, @p436, @p437, @p438, @p439) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p440, @p441, @p442, @p443, @p444) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p445, @p446, @p447, @p448, @p449) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p450, @p451, @p452, @p453, @p454) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p455, @p456, @p457, @p458, @p459) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p460, @p461, @p462, @p463, @p464) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p465, @p466, @p467, @p468, @p469) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p470, @p471, @p472, @p473, @p474) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p475, @p476, @p477, @p478, @p479) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p480, @p481, @p482, @p483, @p484) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p485, @p486, @p487, @p488, @p489) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p490, @p491, @p492, @p493, @p494) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p495, @p496, @p497, @p498, @p499) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p500, @p501, @p502, @p503, @p504) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p505, @p506, @p507, @p508, @p509) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p510, @p511, @p512, @p513, @p514) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p515, @p516, @p517, @p518, @p519) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p520, @p521, @p522, @p523, @p524) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p525, @p526, @p527, @p528, @p529) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p530, @p531, @p532, @p533, @p534) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p535, @p536, @p537, @p538, @p539) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p540, @p541, @p542, @p543, @p544) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p545, @p546, @p547, @p548, @p549) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p550, @p551, @p552, @p553, @p554) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p555, @p556, @p557, @p558, @p559) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p560, @p561, @p562, @p563, @p564) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p565, @p566, @p567, @p568, @p569) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p570, @p571, @p572, @p573, @p574) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p575, @p576, @p577, @p578, @p579) RETURNING id; INSERT INTO flat_configuration_entries (configuration_firm_id, configuration_id, name, use_in_calculation, value) VALUES (@p580, @p581, @p582, @p583, @p584) RETURNING id;z
And actual DbUpdateException rised in ~2min (somethime it tooks up to 5 min to rise an exception)
[12:47:03 ERR] Duplicate key value violates unique constraint Microsoft.EntityFrameworkCore.DbUpdateException: Duplicate key value violates unique constraint ---> Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details. ---> Npgsql.PostgresException (0x80004005): 23505: duplicate key value violates unique constraint "IX_configurations_firm_id_name_application_id" DETAIL: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information. at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|225_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) Exception data: Severity: ERROR SqlState: 23505 MessageText: duplicate key value violates unique constraint "IX_configurations_firm_id_name_application_id" Detail: Detail redacted as it may contain sensitive data. Specify 'Include Error Detail' in the connection string to include this information. SchemaName: public TableName: configurations ConstraintName: IX_configurations_firm_id_name_application_id File: nbtinsert.c Line: 534 Routine: _bt_check_unique --- End of inner exception stack trace ---
I think this huge time delay is related to Batch execution.
My workaround is to split records creation into next steps wrapped within transaction:
The text was updated successfully, but these errors were encountered: