Database
 sql >> Baza danych >  >> RDS >> Database

Kilka drobnych problemów z próbkami Hekaton

Niektórzy z was mają dostęp do opublikowanego Hekaton Skrypty demonstracyjne In-Memory OLTP z udziałem AdventureWorks; Najnowsza próbka jest publikowana tutaj. Te przykłady wpięte w przykładową bazę danych AdventureWorks2012 w CodePlex. Jeśli wypróbowałeś te próbki, być może napotkałeś kilka problemów, które mogą radykalnie zmienić Twoje pierwsze doświadczenia z tą technologią.

Autoryzacja bazy danych

Wiele osób pobiera plik „AdventureWorks2012 Data File” – plik .mdf o wielkości 200 MB, który można dołączyć – bez logowania – przy użyciu następującej składni:

CREATE DATABASE AdventureWorks2012 ON
(
  NAME = AdventureWorks2012_Data, FILENAME = '<path>\AdventureWorks2012_Data.mdf'
)
FOR ATTACH_REBUILD_LOG;

Problem polega na tym, że jeśli jesteś podłączony do instancji SQL Server jako konto Windows, możesz przypadkowo zostać właścicielem bazy danych. Co nie będzie wielkim problemem w większości scenariuszy, z wyjątkiem tego, że jeśli utworzysz procedury składowane za pomocą EXECUTE AS OWNER , podobnie jak wiele napotkanych próbek, może to spowodować problem. Ten wiersz można znaleźć na przykład w wielu natywnie kompilowanych procedurach składowanych:

WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER

O ile nie udało Ci się już złagodzić tego problemu w inny sposób, jeśli właścicielem bazy danych jest Twoje konto Windows, prawdopodobnie podczas próby utworzenia takiej procedury pojawi się następujący błąd:

Msg 15517, Poziom 16, Stan 1, Procedura [nazwa procedury]
Nie można wykonać jako podmiot zabezpieczeń bazy danych, ponieważ podmiot „dbo” nie istnieje, tego typu podmiotu nie można personifikować lub nie masz uprawnień.

W zależności od środowiska możesz poważnie rozważyć, jak sobie z tym radzisz; w moim przypadku wybrałem łatwą ścieżkę i po prostu ustawiłem autoryzację w bazie danych na sa :

ALTER AUTHORIZATION ON DATABASE::AdventureWorks2012 TO sa;

W tym momencie udało mi się uruchomić skrypt demonstracyjny bez problemu (cóż, pojawiły się błędy, gdy próbowałem dodać inną grupę plików zoptymalizowaną pod kątem pamięci, ale to zupełnie inny i ignorowany problem).

Liczba pojemników

Wydaje się, że nie ma mnóstwa praktycznych wskazówek dotyczących wyboru liczby zasobników dla tabel zoptymalizowanych pod kątem pamięci. Jest ten artykuł na MSDN, który zawiera pewne szczegóły techniczne, a Klaus Aschenbrenner napisał ten post o dokonywaniu mądrych wyborów w tym obszarze. Poza tym możesz sam eksperymentować. SWAG, który słyszałem najczęściej, to 1x-2x liczba unikalnych wartości klucza, więc wyszukiwanie punktów jest najbardziej wydajne. Jednak niektóre próbki, które tam znajdziesz, albo konsekwentnie używają 1 000 000 wiader, albo mniejszych liczb, takich jak 100 (a nawet 5 w jednym przypadku) lub mieszanki. Miej to na uwadze, gdy zaczniesz eksperymentować z własnym schematem i wzorcami dostępu do danych – być może będziesz musiał zerwać tabele i spróbować ponownie z różnymi rozmiarami segmentów, aby znaleźć „najlepsze miejsce” dla swojego scenariusza.

Model odzyskiwania

Baza danych AdventureWorks2012 jest ustawiona na SIMPLE powrót do zdrowia. Podobnie jak w przypadku właściciela bazy danych, w większości przypadków nie jest to aż tak wielka sprawa dla przykładowej bazy danych. Ale kiedy testujesz OLTP w pamięci – i prawdopodobnie w połączeniu z innymi technologiami, które sprawiają, że SIMPLE odzyskiwanie łamacza transakcji, takiego jak grupy dostępności — o wiele bardziej sensowne może być przeprowadzanie testów na bazie danych z odzyskiwaniem ustawionym na FULL . W przeciwnym razie możesz nie zaobserwować pewnych zachowań, które mogą być różne w różnych modelach odzyskiwania. Możesz zmienić AdventureWorks2012 na FULL w następujący sposób:

ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;

I nie zapomnij wykonać pełnej kopii zapasowej, aby utworzyć łańcuch kopii zapasowych, a baza danych nie działa w pseudo-SIMPLE tryb odzyskiwania.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Maskowanie danych w aplikacjach DB

  2. Jak naprawić ORA-12505, TNS:listener nie zna obecnie identyfikatora SID podanego w deskryptorze połączenia

  3. Jak zamawiać według liczby w SQL?

  4. Ograniczenie elastyczności danych w bazie danych NoSQL

  5. Jak zmienić nazwę kolumny w SQL?