Jakie podejścia należy zastosować, aby zwiększyć wydajność operacji wstawiania danych do bazy danych po wdrożeniu indeksów?
Java
Przeczytaj kod, określ co zostanie wyświetlone na końcu wykonania programu
Czy jesteś gotowy do udziału w wsparciu usług na produkcji, dyżurach?
Przeczytaj kod i podkreśl błędy @Component public class AuthorSearchService { @Autowired private AuthorsRepository authorsRepository; @Autowired private StatisticsRepository statisticsRepository; private AlertRestClient arc = new AlertRestClient(); // W zapytaniu może być zarówno pełne imię i nazwisko, jak i jego część, na przykład "Vladimir Panov" lub "panov" @Transactional public List<Author> search(String query) { List<Author> authors = authorsRepository.findByNameContainingIgnoreCase(query); Statistics s = statisticsRepository.findById(query).orElse(null); if (s == null) s = new Statistics(query); s.setNumbers(s.getNumbers() + 1); statisticsRepository.save(s); if (s.getNumbers() > 1000 && authors.size() > 1000) { System.out.println("zbyt popularne wyszukiwanie z zbyt dużą ilością danych, wysyłanie alertu..."); arc.send(query, s.getNumbers(), authors.size()); } return authors; } } @Entity @Data public class Author { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "author") private List<Book> books; public Author(String name) { this.name = name; } }
Do czego służy ograniczenie klucza obcego? Bez niego nie można?
Ile prób potrzeba, aby zagwarantować, że dostaniesz parę tego samego koloru, jeśli masz stos skarpetek trzech kolorów (czerwony, biały, czarny) i wyciągasz je pojedynczo?
Czego chciałbyś się podjąć w nowym miejscu? Co dla ciebie oznacza udział w decyzjach architektonicznych?
Usługa co kilka godzin kończy się błędem OutOfMemoryError. Od czego zaczniesz analizę problemu?
Opowiedz o sobie i swoim doświadczeniu
Podaj przykład dużego zadania biznesowego lub integracji, którą wykonałeś całkowicie sam.
Opowiedz więcej szczegółów, jak zoptymalizowałeś obsługę wiadomości Kafka i synchroniczne wywołania RPC.
Czy masz doświadczenie w pisaniu BeanPostProcessor? Do jakiego zadania?
Czy program zablokuje się podczas transferów między portfelami? Dlaczego?
Jakie gwarancje daje klucz obcy w relacyjnej bazie danych? Czy można usunąć rekord rodzica, jeśli na niego istnieją klucze obce?
Jak zmniejszyć obciążenie bazy danych, jeśli cache wygasa i zapytania zaczynają masowo trafiać do bazy danych?
Co byś zrobił, gdybyś wdrożył coś i wszystko się zawaliło — alarmy, nie rozumiesz, co się dzieje?
Przeczytaj kod i policz błędy ```java @Component public class AuthorSearchService { @Autowired private AuthorRepository authorRepository; @Autowired private StatisticsRepository statisticsRepository; private AlertRestClient arc = new AlertRestClient(); // W zapytaniu może być zarówno pełna wartość, jak i tylko część imienia, na przykład "Vadim Pavlo" lub "pavlo" @Transactional public List<Author> search(String query) { List<Author> authors = authorRepository.findByNameContainingIgnoreCase(query); Statistics s = statisticsRepository.findById(query).orElse(null); if (s == null) s = new Statistics(query); s.setNumbers(s.getNumbers() + 1); statisticsRepository.save(s); if (s.getNumbers() > 1000 && authors.size() > 1000) { System.out.println("zbyt popularne wyszukiwanie z zbyt dużą ilością danych, wysyłanie alertu..."); arc.send(query, s.getNumbers(), authors.size()); } return authors; } } @Entity @Data public class Author { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "author") private List<Book> books; public Author(String name) { this.name = name; } } ```
Czy w zespole było przeglądanie kodu?
Istnieje tabela z 100 milionami rekordów. Należy wybrać wszystkie rekordy, gdzie value > 100. Jakie są zalecenia, aby zminimalizować czas wykonania zapytania?
Czy istnieją ograniczenia dotyczące indeksów? Jakie typy indeksów istnieją (hash, B-tree) i kiedy ich używać?