Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Το δίκτυο γενικά είναι στημένο χρόνια. Οι περισσότεροι υπολογιστές έιναι καλοί με ssd , 4 η 8 gb ram και gigabit συνδέσεις

Γενικά δεν έχω δοκιμάσει να αλλάξω switch μήπως έχει κανά θέμα και bufferιαζει . Θα το τσεκάρω αύριο αν και δεν νομίζω οτι ειναι θεμα δικτύου

O server ειναι περσινός. HP με Xeon, 32GB Ram, 4 δίσκοι σε Raid5 , windows server 2016 και Sql 2017 Standard

Θα κάτσω το ΣΚ μάλλον να τσεκάρω δίσκους και μνήμες αλλά το θέμα ειναι οτι η τρέχουσα βάση αυτη τη στιγμή ειναι στα 11GB (νομιζω οτι ειναι οκ)

Ο Sql έγινε Migration από 2008 αν θυμάμαι που έτρεχε σε άλλο server

Γενικά έχει καθυστερήσεις

Έτρεξα πριν ένα query για να δω ποση μνήμη τρώει . Να τονίσω οτι κανενα τερματικό δεν ειναι ανοιχτο αυτη την στιγμή οπότε κανενα pc δεν χρησιμοποιεί erp

select (physical_memory_in_use_kb/1024)Phy_Memory_usedby_Sqlserver_MB, (locked_page_allocations_kb/1024 )Locked_pages_used_Sqlserver_MB, (virtual_address_space_committed_kb/1024 )Total_Memory_UsedBySQLServer_MB, process_physical_memory_low, process_virtual_memory_low from sys. dm_os_process_memory

11030 physical memory 11264 total

Γενικά ο server δεν κάνει κάτι το τρελο. Δεν ειναι ουτε domain controller , ουτε dhcp server. Ενα IIS έχω στήσει μόνο το οποίο το εχω σταματήσει τις τελευταίες μέρες

Αλλα γενικά είναι φορές που κολλάει αρκετά, φτάνει να χρησιμοποιεί 28GB γενικά ο server . Και ειδικά αυτή την ώρα που δεν ειναι κανενας ανοιχτος δειχνει οτι τραβαει 11GB 

Υπάρχει κανά query το οποίο να σου δειχνει πχ που οφειλονται οι καθυστερήσεις (πχ να σου βγάζει διάφορες διεργασίες σε ms)

 

 

Επισκέπτης
Δημοσ.

Γι αρχή κάνε ένα rebuild όλους τους indexes.

Δημοσ.
7 ώρες πριν, zx1234r είπε

Εγώ θα έφερνα κάποιον sql administrator να κάνει μάζεμα της βάσης και optimization. 

Και εγώ αυτό σκέφτομαι

 

35 λεπτά πριν, elorant είπε

Γι αρχή κάνε ένα rebuild όλους τους indexes.

Νομίζω έχει γίνει πρόσφατα αλλά θα το ξαναδώ.

Δημοσ.
17 ώρες πριν, ΜΑΝΩΛΗΣ1 είπε

Αλλα γενικά είναι φορές που κολλάει αρκετά, φτάνει να χρησιμοποιεί 28GB γενικά ο server . Και ειδικά αυτή την ώρα που δεν ειναι κανενας ανοιχτος δειχνει οτι τραβαει 11GB 

Το 11gb ram σε αδράνεια για μία τόσο μικρή βάση μου φαίνονται υπερβολικά. Έχω δει σε μεγάλη ναυτιλιακή εταιρία, βάση sql 2016 350gb να τραβάει μόλις 12gb ram. Κάτι δεν πάει καλά στην περίπτωση σας. Θα έλεγα αν δεν ξέρεις καλά απο βάσεις, να μην τρέξεις άλλα queries γιατί έχει τύχει να πάρω βάση στη μασχάλη στο παρελθόν και απο τότε φωνάζω μόνο ειδικούς και παίρνω πάντα backup.

Επισκέπτης
Δημοσ.

Το μέγεθος της βάσης δεν έχει σημασία για τη χρήση της μνήμης. Αυτό που έχει σημασία είναι το πλήθος των queries και πόσο expensive είναι κάτι που σχετίζεται άμεσα με τα joins που γίνονται. Επιπλέον, ο SQL Server αν δεν του ορίσεις μέγιστο αριθμό μνήμης θα φάει όσο βρει. 

  • 1 μήνα μετά...
Δημοσ.

Τα προβλήματα στο 90% των περιπτώσεων δεν έχουν να κάνουν με το μηχάνημα ή την εγκατάσταση .Αρχικά σίγουρα χρειάζεσαι μια εικόνα στα queries και ποιος τραβάει τι .Προσωπικά χρησιμοποιώ κάποια scripts απο sp_Blitz σε αντίστοιχες περιπτώσεις .Συνήθως ,επόμενο μέρος να κοιτάξεις είναι procedures που lockάρουν όταν κάνουν updates/ζητάνε δεδομένα και προκαλούν μεγάλα wait times στις υπόλοιπες .Τέλος ,ένα πέρασμα ξανά τα indexes ,δεν βλάπτει

Δημοσ.

Προτείνω να βρεις κάποιον SQL Server ειδικό.

Προτείνω επίσης να δεις το SQL Profiler tool, θα σου δείξει real-time τί γίνεται και ποια queries τρέχουν σε φάση καθυστέρησης: 

https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-2017 (αλλά κάποιος που γνωρίζει μπορεί να δει τι παίζεται)

Άλλη ιδέα είναι να φτιάξεις ένα maintenance plan στις databases που σε ενδιαφέρουν (θα περιλαμβάνει σίγουρα index rebuild/reorg, statistics, κλπ).

Προτείνω επίσης να θέσεις min/max RAM. Υπάρχει κάποια φόρμουλα που σου δίνει τα επιθυμητά μεγέθη αναλόγως Server specs (π.χ. http://sqlmax.chuvash.eu/)

Τέλος έχεις τσεκάρει τυχόν θέματα συμβατότητας ή known issues του ERP με τη συγκεκριμένη έκδοση του SQL Server;

Δημοσ. (επεξεργασμένο)

Μπορείς να τσεκάρεις

α) script για Expensive queries Υπάρχουν πολλά στο διαδίκτυο.

αυτό που προτιμώ εγώ

Spoiler

 

 

SELECT session_id,blocking_session_id blockid,wait_time,total_elapsed_time/1000 time,--SDER.[statement_start_offset],  
  --SDER.[statement_end_offset],
db_name(database_id),wait_type,
reads reads,
logical_reads,
writes   ww,
status,
  CASE  
     WHEN SDER.[statement_start_offset] > 0 THEN
        --The start of the active command is not at the beginning of the full command text
        CASE SDER.[statement_end_offset]
           WHEN -1 THEN
              --The end of the full command is also the end of the active statement
              SUBSTRING(DEST.TEXT, (SDER.[statement_start_offset]/2) + 1, 2147483647)
           ELSE  
              --The end of the active statement is not at the end of the full command
              SUBSTRING(DEST.TEXT, (SDER.[statement_start_offset]/2) + 1, (SDER.[statement_end_offset] - SDER.[statement_start_offset])/2)  
        END
     ELSE
        --1st part of full command is running
        CASE SDER.[statement_end_offset]
           WHEN -1 THEN
              --The end of the full command is also the end of the active statement
              RTRIM(LTRIM(DEST.[text]))
           ELSE
              --The end of the active statement is not at the end of the full command
              LEFT(DEST.TEXT, (SDER.[statement_end_offset]/2) +1)
        END
     END AS [executing statement],

    
    
     CASE  
     WHEN SDER.[statement_start_offset] > 0 THEN
        --The start of the active command is not at the beginning of the full command text
        CASE SDER.[statement_end_offset]
           WHEN -1 THEN
              --The end of the full command is also the end of the active statement
              SUBSTRING(DEST.TEXT, (SDER.[statement_start_offset]/2) + 1, 2147483647)
           ELSE  
              --The end of the active statement is not at the end of the full command
              SUBSTRING(DEST.TEXT, (SDER.[statement_start_offset]/2) + 1, (SDER.[statement_end_offset] - SDER.[statement_start_offset])/2)  
        END
     ELSE
        --1st part of full command is running
        CASE SDER.[statement_end_offset]
           WHEN -1 THEN
              --The end of the full command is also the end of the active statement
              RTRIM(LTRIM(DEST.[text]))
           ELSE
              --The end of the active statement is not at the end of the full command
              LEFT(DEST.TEXT, (SDER.[statement_end_offset]/2) +1)
        END
     END AS  text,


  DEST.[text] AS [full statement code] ,
  *
FROM sys.[dm_exec_requests] SDER CROSS APPLY sys.[dm_exec_sql_text](SDER.[sql_handle]) DEST
WHERE SDER.session_id > 50
and SDER.session_id <>@@SPID
ORDER BY 5,SDER.[session_id], SDER.[request_id]

 

β) Locks. με Activity Monitor, σε περίπτωση πουκάποιοι χρήστες μπλοκάρουν κάποιους άλλους

Επεξ/σία από Nazar

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...