Χωρίς λεπτομέρειες μόνο εικασίες μπορεί να κάνει κάποιος. Τί έκδοση του SQL είναι (Enterprise/Development ή Standard?), τί Service Packs έχει, τί κάνει το script? Κοίταξες το Current Activity του SQL Server? Έβαλες τον SQL Profiler να δεις τί τρέχει?
Όσον αφορά τις αλλαγές, αν πέρασες από 1 σε 2 core έκανες μία πολύ σημαντική αλλαγή - τρέχεις κάποια statements παράλληλα. Αν το script εκτελείται μονοκόματα, ίσως τα statements να μην δουλεύουν καλά σε παράλληλη εκτέλεση. Αυτό διορθώνεται με hints. Η έκδοση του SQL Server έχει επίσης σημασία, καθώς η Enterprise χρησιμοποιεί αυτόματα όλους τους επεξεργαστές ενώ η Standard μόνο με hints. Τέλος, o SQL Server 2008 φέρεται πολύ καλύτερα σε multi-core περιβάλλον απ' ότι ο SQL Server 2005.
Αν διάφορα statements εκτελούνται παράλληλα, μπορεί άνετα το ένα να μπλοκάρει το άλλο. Το SET IMPLICIT_TRANSACTIONS ON ξεκινάει transactions όταν συναντήσει οποιαδήποτε σημαντική εντολή SQL (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER) με αποτέλεσμα τα transactions του script να καλύπτουν πολύ μεγαλύτερο τμήμα του. Ίσως έτσι κάποια statements να κλειδώνουν και να κρατάνε resources μέχρι το επόμενο commit, ενώ πριν τα έπιανε κάποιο άλλο statement και έπρεπε να περιμένουν.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos