Sobes.tech

Golang

Aus Leistungssicht, welche allgemein anerkannten Regeln sollten auf ein solches Datenbankschema angewendet werden?

140

Warum garantieren die Go-Entwickler nicht die Reihenfolge der Durchlaufung der Map bei range?

128

Was tun, wenn wir alle erforderlichen Indizes hinzugefügt haben, aber die Datenbank immer noch mit der Last nicht zurechtkommt und langsam wird?

128

// GetUsersList gibt eine Liste von Benutzern zurück. (In der Datenbank speichern wir etwa 1 Million Benutzer) // Wird verwendet, um die Benutzerliste im Admin-Panel anzuzeigen. Wenn isActive = true, werden nur aktive Benutzer zurückgegeben. 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("Fehler beim Abrufen der Benutzerliste") } var users []User // Informationen zu den Benutzern ausfüllen. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Liste der E-Mails des Benutzers abrufen err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } 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 { emails[i] = strings.ToLower(e) } } user.Emails = emails // Informationen zum Profil aus der VKontakte API abrufen profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("Fehler beim Abrufen der Benutzerliste") } }

107

-- Liste die Bücher sortiert nach ID, -- aber vertausche in der Ausgabe die Zeilen 2 und 3: -- 1 Der Meister und Margarita 100 -- 3 Der goldene Telenok 50 -- 2 Zwölf Stühle 200 -- 4 Eugen Onegin 250 -- 5 Belkins Erzählungen 90 -- 6 Die drei Musketiere 60

101
/2