none
SQL Server Einstellungen optimieren RRS feed

  • Frage

  • Hallo,

     

    kann man den SQL Server Einstellungen optimieren?

     

    Ich habe ca. 4,8 Sekunden Wartezeit am Server.

    Kann ich das durch Einstellungen optimieren?

     

    Danke.

    Gruß Klaus

    Freitag, 1. August 2014 07:52

Antworten

  • Hallo Klaus,

    der SQL Server wird im Standard nicht mit "angezogener Handbremse" installiert, die Einstellungen sind für 99% der Fälle bereits optimal. Das Problem & die Ursache wirst Du an anderer Stelle suchen müssen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 1. August 2014 08:05
  • ...

     

    Ich habe ca. 4,8 Sekunden Wartezeit am Server.

    Kann ich das durch Einstellungen optimieren?

    ...

    Worauf beziehen sich diese 4,8 Sekunden?

    Um eine bestimmte Abfrage aus X?

    Im Durchschnitt?

    Es kommt ja sehr auf das eigentliche Problem an. Daher muss man den Kontext kennen.

    Natürlich kann man bei der Einrichtung einiges "falsch", oder suboptimal machen. Beispielsweise Log und Datendateien auf das selbe Laufwerk etc.

    Aber so rein von den Einstellungen her gibt es nur wenig, was man prinzipiell ändern sollte.


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Freitag, 1. August 2014 08:44

Alle Antworten

  • Hallo Klaus,

    der SQL Server wird im Standard nicht mit "angezogener Handbremse" installiert, die Einstellungen sind für 99% der Fälle bereits optimal. Das Problem & die Ursache wirst Du an anderer Stelle suchen müssen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 1. August 2014 08:05
  • ...

     

    Ich habe ca. 4,8 Sekunden Wartezeit am Server.

    Kann ich das durch Einstellungen optimieren?

    ...

    Worauf beziehen sich diese 4,8 Sekunden?

    Um eine bestimmte Abfrage aus X?

    Im Durchschnitt?

    Es kommt ja sehr auf das eigentliche Problem an. Daher muss man den Kontext kennen.

    Natürlich kann man bei der Einrichtung einiges "falsch", oder suboptimal machen. Beispielsweise Log und Datendateien auf das selbe Laufwerk etc.

    Aber so rein von den Einstellungen her gibt es nur wenig, was man prinzipiell ändern sollte.


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Freitag, 1. August 2014 08:44
  • Der Einstieg in die Beantwortung deiner Frage ist eine Gegenfrage:

    Worauf wartest du 4,8 sec?

    Wartest Du auf das Ergebnis einer Abfrage im SQL Server Management Studio? Falls ja: Wie sieht denn diese Abfrage sowie die Struktur der zugehörigen Tabellen (incl. Indices) aus? Kannst Du den aktuellen Ausführungsplan zur Verfügung stellen?

    Oder:

    Wartest Du auf ein Ergebnis, das in einer Applikation angezeigt werden soll? Falls ja: kannst Du mittels Profiler Trace den SQL-Anteil an der Wartezeit ermitteln?

    Oder:

    Handelt es sich um eine Abfrage, die Hunderttausende von Datensätzen zurück gibt, die auch alle ausgegeben werden? Falls ja, ist es üblicherweise das Netzwerk, das die Datenmengen erst mal vom Server zum Client "schaufeln" muß.

    Wie Du siehst, gibt es eine Vielzahl von Möglichkeiten (o.g. sind nur ein paar Ansätze). Ohne weitere Infos können wir nur raten...

    Freitag, 8. August 2014 10:53
  • Infos gab es reichlich, allerdings im anderen Thread:
    http://social.msdn.microsoft.com/Forums/de-DE/bbc1a40c-89cd-4cf0-b411-037607f00326/datenbankzugriff-beschleunigen?forum=sqlserverexpressde
     Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Freitag, 8. August 2014 13:33
  • Infos gab es reichlich, allerdings im anderen Thread:
    http://social.msdn.microsoft.com/Forums/de-DE/bbc1a40c-89cd-4cf0-b411-037607f00326/datenbankzugriff-beschleunigen?forum=sqlserverexpressde
     Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Ich sehe da momentan keinen direkten Zusammenhang - im Link geht es um Stunden und hier um 4,8s.

    Sollte es tatsächlich das gleiche Thema sein, ist das doch schon mal ein gewaltiger Fortschritt ;-)

    Freitag, 8. August 2014 14:11
  • Hallo!

    SQL ist vom Tisch.

    Weil zu langsam und kann zu wenig Daten.

    Danke.

    Gruß Klaus

    Samstag, 9. August 2014 04:43
  • Hallo!

    SQL ist vom Tisch.

    Weil zu langsam und kann zu wenig Daten.

    Danke.

    Gruß Klaus

    Danke Dir für den Scherz am Morgen!!

    Die Aussage ist analog zu "Ein Schreubenzieher ist ungeeignet, um eine Schraube ein- bzw. auszudrehen!" (sofern man ihn am "dünnen Ende" anfasst)...

    Leider hast du es bis heute nicht geschafft, dein Problem an Hand von ein paar Beispieldaten und der zu implementierenden Logik darzustellen.

    Ein paar Millionen Datensätze zu erzeugen und mit Daten aus einer anderen Quelle (ebenfalls Tabelle in einer Datenbank?) zu vergleichen und ein paar Berechnungen anzustellen, ist -rein technisch gesehen- für den SQL Server eine Frage von Sekunden, im worst case wenige Minuten (dann ist da aber schon ein "Triangular Join" involviert). Und zwar auf meinem ziemlich alten PC.

    Wenn das Ganze deutlich länger dauert, ist das kein Problem des SQL Servers, sondern der implementierten Logik. Und damit befindet sich die Ursache vor dem Bildschirm. Nicht dahinter.

    Falls Du immer noch an einer performanten Lösung interessiert bist, beschreibe Dein Problem als logischen Ablauf und trenne Dich davon, es unbedingt so machen zu wollen, wie Du es jetzt probierst.

    Wenn man schneler vorwärts kommen will, ist es zwar schon ein Fortschritt, vom Robben zum Krabbeln zu wechseln. Viel schneller kommt wan aber voran, wenn man rennt...

    Samstag, 9. August 2014 08:15
  • Und hier noch ein kleines Beispiel, wie man "auf die Schnelle" 12 Millionen Datensätze ohne jegliche Schleife erzeugt. Dauer: 24sec.

    Wie lange braucht Deine Loop gleich nochmal? ...

    WITH cte AS
    (
    	SELECT TOP 1000 Number FROM master..spt_values
    )
    SELECT TOP 12000000 ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) as n
    INTO #t1
    FROM cte 
    CROSS JOIN
    (SELECT * FROM cte) x
    CROSS JOIN 
    (SELECT TOP 12 * FROM cte) y

    Samstag, 9. August 2014 08:30
  • Wie lange braucht Deine Loop gleich nochmal? ...

    Ein paar Tage...
    Samstag, 9. August 2014 10:45
  • Ein par Tage?

    Komisch...

    Wenn ich mit dem SQL Server 12Mio Datensätze in weniger als einer halben Minute erzeugen kann, wie kommst Du dann darauf, daß es am SQL Server liegt, daß Deine Variante so lange dauert? ;-)

    Samstag, 9. August 2014 11:29
  • Weil jeder meiner Datensätze andere Daten hat.

    Und ich sie somit einzeln schreiben muss.

    Aber...

    wie kann ich eine Textdatei zeilenweise lesen und jede Zeile in einer Variable speichern?

    Es sollte so sein:

    Wert1 = Zeile1

    Wert2 = Zeile2

    Wert3 = Zeile3

    usw.

    Wert1...3 ist meine Variable und Zeile1...3 ist Zeile Nummer...

    Die Werte in den Zeilen sind Zahlen und müssen auch in der Variable eine Zahl sein.

    Danke.

    Gruß Klaus

    Samstag, 9. August 2014 12:31
  • Hallo Klaus,

    das Thema hatten wir im anderen Thread ja schon ausreichend diskutiert. Auch wenn Du es nicht wahrhaben willst: Das liegt nicht am SQL Server oder einem DBMS an sich, das liegt an deinem Code bzw. dem fehlenden Verständnis deinerseits. Aber lassen wir das, meine abschließende Meinung und einen Vorschlag, wann und wie wir da weitermachen können, hatte ich dir ja schon mehrfach geschrieben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 9. August 2014 12:56
    Moderator
  • Am 09.08.2014 schrieb BlauesBlatt:

    wie kann ich eine Textdatei zeilenweise lesen und jede Zeile in einer Variable speichern?

    Einmal reicht:
    http://social.Msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/f9b10867-2696-4984-8cee-22e3ab77fea3#f9b10867-2696-4984-8cee-22e3ab77fea3


    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Samstag, 9. August 2014 13:29
  • Weil jeder meiner Datensätze andere Daten hat.

    In meinem Beispiel ist das nicht anders...

    Es ist der "Nachbau" Deines Codes im "andren Thread":, reduziert auf eine Spalte:

    Do Until strCounter = strStop
    
     
    
    cmd.CommandText = "INSERT Test (ID, Wert1, Wert2) VALUES ('" & strCounter & "', '" & strWert1 & "', '" & strWert2 & "')"
    
                cmd.Connection = sqlCon
    
                sqlCon.Open()
    
                cmd.ExecuteNonQuery()
    
                sqlCon.Close()
    
     
    
    strWert1 = strWert1 + 1
    
    strWert2 = strWert2 + 1
    
    strCounter = strConter +1
    
     
    
    If strConter = 12000000 Then
    
       strStop = strCounter
    
    End If
    
    Loop

    Falls Du Schwierigkeiten damit hast, den Rest Deines Codes in das SQL Statement einzufügen, und Du Dich offensichtlich mit Nachdruck weigerst, jegliches Hilfsangebot auszuschlagen, dann ist die Umsetzung mittels SQL Server wahrscheinlich wirklich nichts für Dich.

    Ich hoffe nur, daß es sich dabei nicht um eine Applikation handelt, die

    a) industriell / professionell genutzt werden soll und/oder

    b) die ein Einkommen irgendwelcher Art ermöglicht (sei es als Freelancer oder im Rahmen Deines Jobs).

    So lange es nur für Dich selbst ist, kannst Du damit spielen, so lange Du willst. Soll der Code jedoch genutzt werden, empfehle ich dringend, daß Du das Thema jemanden zur Bearbeitung gibst, der sich mit performanter Programmierung auskennt...

    Ich denke, auch ich gebe jetzt hier auf.

    Viel Glück noch! (Denn Glück ist das Einzige, was Dir noch helfen wird...).

    Samstag, 9. August 2014 15:38
  • Hallo!

    SQL ist vom Tisch.

    Weil zu langsam und kann zu wenig Daten.

    Danke.

    Gruß Klaus

    Das ist kein Scherz.

    Ich habe mein Problem anders gelöst.

    Bei 9,99 GB ist SQL am Ende und das reicht mir nicht.

    Danke.

    Gruß Klaus

    Mittwoch, 13. August 2014 03:06
  • Nicht der SQL Server ist bei 10GB "am Ende", sondern dies ist die Grenze der (kostenlosen) Express-Version.

    SQL Standard kann deutlich mehr.

    Ich wünsche Dir vie Erfolg, eine DB zu finden, die (unter Beibehaltung des bisherigen Programmierstils) auch nur eine annähernd akzeptable Performance bietet...

    Mittwoch, 13. August 2014 06:39
  • Ich wünsche Dir vie Erfolg, eine DB zu finden, die (unter Beibehaltung des bisherigen Programmierstils) auch nur eine annähernd akzeptable Performance bietet...

    Mit meinem Programmierstil macht SQL bis über 130000 Select/Min..

    Ist das akzeptabel?

    Und dabei habe ich nur den Index geändert...

    Dienstag, 30. September 2014 08:29