Ben al een paar dagen bezig met een eigen project te koppelen met NHibernate. Alles werkt naar behoren alleen het toevoegen van items gaat zeer langzaam (interval per 100 toegevoegde items):
Heb vannacht het programma laten draaien en toen die rond de 100.000 items zat duurde het 60 seconden om 100 items toe te voegen aan de database. Ik maak gebruik van een MySQL 5 database en de engine die ik voor de tabel gebruik is MyISAM .
De manager VillageManager
Deze manager word vanuit de business maar 1x aangeroepen en word steeds de functie SaveVillage() gebruikt om de Village's toe te voegen.
Op internet heb ik al een artikel gelezen dat je de Configuration en ISessionFactory static moet maken voor snellere verwerking van de gegevens. Maar toch blijft die in mijn ogen langzaam functioneren. Wat doe ik fout of hoort deze steeds grotere vertraging bij NHibernate?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Item 100 completed in: 3,828125 sec. (Vanwege alles opstarten langzaam) Item 200 completed in: 0,65625 sec. Item 300 completed in: 0,546875 sec. Item 400 completed in: 0,734375 sec. Item 500 completed in: 0,875 sec. Item 600 completed in: 1,078125 sec. Item 700 completed in: 1,203125 sec. Item 800 completed in: 1,125 sec. Item 900 completed in: 1,125 sec. Item 1000 completed in: 1,359375 sec. Item 1100 completed in: 1,3125 sec. ..... Item 100.000 completed in: 60,548 sec |
Heb vannacht het programma laten draaien en toen die rond de 100.000 items zat duurde het 60 seconden om 100 items toe te voegen aan de database. Ik maak gebruik van een MySQL 5 database en de engine die ik voor de tabel gebruik is MyISAM .
De manager VillageManager
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| public class VillageManager { static Configuration config; static ISessionFactory factory; private ISession session; public ISession Session { get { if (session == null || !session.IsOpen) { try { session = factory.OpenSession(); } catch (Exception ex) { throw new Exception("The session or database connection could not be created", ex); } } return session; } } public VillageManager() { try { config = new Configuration(); config.AddClass(typeof(Database.EntityVillage)); factory = config.BuildSessionFactory(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } public void SaveVillage(EntityVillage village) { ITransaction tx; try { Session.Reconnect(); tx = Session.BeginTransaction(); Session.Save(village); tx.Commit(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Session.Flush(); Session.Disconnect(); } } } |
Deze manager word vanuit de business maar 1x aangeroepen en word steeds de functie SaveVillage() gebruikt om de Village's toe te voegen.
Op internet heb ik al een artikel gelezen dat je de Configuration en ISessionFactory static moet maken voor snellere verwerking van de gegevens. Maar toch blijft die in mijn ogen langzaam functioneren. Wat doe ik fout of hoort deze steeds grotere vertraging bij NHibernate?