Sobes.tech

Golang

Z punktu widzenia wydajności, jakie powszechnie akceptowane zasady należy zastosować do takiego schematu bazy danych?

140

Dlaczego twórcy Go nie gwarantują kolejności iteracji mapy podczas range?

128

Co zrobić, jeśli dodaliśmy wszystkie niezbędne indeksy, ale baza danych nadal nie radzi sobie z obciążeniem i zwalnia?

128

// GetUsersList zwraca listę użytkowników. (w bazie danych przechowujemy około 1 miliona użytkowników) // Używany do wyświetlania listy użytkowników w panelu administratora. Jeśli isActive = true, zwracani są tylko aktywni użytkownicy. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("błąd podczas pobierania listy użytkowników") } var users []User // Wypełnij informacje o użytkownikach. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Pobierz listę e-maili użytkownika err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("błąd podczas pobierania listy użytkowników") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Pobierz informacje o profilu z API VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("błąd podczas pobierania listy użytkowników") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("błąd podczas pobierania listy użytkowników") } }

107

-- wyświetl listę książek posortowaną według id, -- ale w wyjściu zamień miejscami 2 i 3 wiersz: -- 1 Mistrz i Małgorzata 100 -- 3 Złoty teleńok 50 -- 2 Dwanaście krzeseł 200 -- 4 Eugeniusz Oniegin 250 -- 5 Opowiadania Belkina 90 -- 6 Trzej muszkieterowie 60

101
/2