2011-03-15 14 views
2

我們使用SchemaUpdate.Execute()更新NHibernate應用程序中的應用程序升級時的數據庫模式結構,該應用程序在MySQL5Dialect和MsSql2008Dialect中均可用。該數據庫有大約220個表格。對MsSql執行只需幾秒鐘,但可能需要10分鐘甚至更多的時間才能對MySql執行。似乎並不重要的是有多少實際的模式更改 - 這是比較需要很長時間。爲什麼NHibernate SchemaUpdate在MySQL中比在MS SQL Server中慢得多

其他人遇到SchemaUpdate.Execute()for MySql性能下降?有什麼我可以做的,無論是在應用程序或數據庫,以優化它?

回答

1

這很可能是因爲您沒有使用innodb而發生的,這意味着ddl更改必須複製所有數據並重建所有索引。

爲什麼MsSql的速度更快?因爲它有適當的ddl支持。

嘗試改變你的餐桌innodb,我相信你會驚喜。

+0

我正在使用innodb。最慢的部分實際上並不是在進行ddl更改,而是將映射文件與當前的ddl進行比較以確定進行哪些更改。我可以這樣說,因爲在執行第一次ddl更改之前,應用程序掛起了幾分鐘。 – jonh 2011-03-16 14:11:14

+0

你在交易中做這件事嗎? – jonnii 2011-03-16 18:30:36

+0

這是在交易中,是的 – jonh 2011-06-17 17:09:32

相關問題