Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо да използвате ниво на изолация ЧЕТЕНЕ НЕКОНТРОЛИРАНО?

Това ниво на изолация позволява мръсно четене. Една транзакция може да види незаети промени, направени от друга транзакция.

За да поддържа най-високото ниво на изолация, СУБД обикновено придобива заключвания на данни, което може да доведе до загуба на едновременност и високи разходи за заключване. Това ниво на изолация отпуска това свойство.

Може да искате да разгледате статията в Уикипедия за READ UNCOMMITTED за няколко примера и допълнително четене.

Може също да се заинтересувате да разгледате статията в блога на Джеф Атууд за това как той и неговият екип са се справили с проблема със застой в първите дни на Stack Overflow. Според Джеф:

Но е nolock опасно? Бихте ли прочели невалидни данни с read uncommitted На? Да, на теория. Няма да намерите недостиг на астронавти с архитектура на базата данни, които започват да ви пускат науката за киселините и всичко, освен да изтеглите пожароизвестителната аларма на сградата, когато им кажете, че искате да опитате nolock .Вярно е:теорията е страшна. Но ето какво мисля аз:"На теория няма разлика между теория и практика. На практика има."

Никога не бих препоръчал използването на nolock като общо "добро за това, което ви боли" коригиране на змийско масло за всякакви проблеми с блокирането на базата данни, които може да имате. Първо трябва да опитате да диагностицирате източника на проблема.

Но на практика добавянето на nolock към заявки, за които абсолютно знаете, че са прости, ясни работи само за четене изглежда никога не водят до проблеми... Стига да знаете какво правите.

Една алтернатива на READ UNCOMMITTED ниво, което може да искате да вземете предвид, е READ COMMITTED SNAPSHOT . Отново цитирам Джеф:

Моментните снимки разчитат на изцяло нов метод за проследяване на промяната на данните ... повече от лека логическа промяна, тя изисква сървърът да обработва данните физически по различен начин. След като този нов метод за проследяване на промяната на данните е активиран, той създава копие или моментна снимка на всяка промяна на данните. Като четете тези моментни снимки, а не данни в реално време по време на спорове, споделените заключвания вече не са необходими при четене и общата производителност на базата данни може да се увеличи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да ИЗБЕРЕМ множество колони в рамките на CASE WHEN на SQL Server?

  2. Как да разберете дали изчислената колона е детерминистична в SQL Server

  3. Резултати от заявка по имейл като HTML таблица в SQL Server (T-SQL)

  4. Основна концепция за заключване на SQL Server

  5. Как връщате имената на колоните на таблица?