النتائج 1 إلى 8 من 8

الموضوع: [فائدة] مراقبة استعلامات SQL في MySQL على نظام Windows

  1. #1
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647

    [فائدة] مراقبة استعلامات SQL في MySQL على نظام Windows



    بسم الله الرحمن الرحيم،

    الحمدلله والصلاة والسلام على خير خلق الله، محمد رسول الله، ومن تبعه ووالاه، أما بعد؛

    [ اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا وزدنا علماً يا رب العالمين ]

    لأن المشاركة تعني الاهتمام، أو Sharing is caring كما نقولها، أحببت أن أشارككم بعض المعلومات التي توصّلت إليها بعد بحثٍ طويل وتجاربٍ كثيرة لأدوات أكثر!

    ما هو الموضوع؟

    لا يوجد ثمّة مبرمجٍ يستخدم قواعد بيانات MySQL أو غيرها مع أية لغة برمجة دون أن يقع بمشاكل قد لا يفهم سببها، أو أن يشعر ببطء تصفح موقعه وزيادة الضغط على قواعدة البيانات.

    إذا كنت مطور ويب ضمن بيئة ASP.NET وقد انتقلت حديثاً إلى لغة PHP وقواعد بيانات MySQL قد تتساءل كيف لك أن تحصل على أداة شبيهة بالـ Profiler الموجودة ضمن MSSQL Server التي تتيح لك تتبع الاستعلامات أولاً بأول.

    إن لم تكن قد استخدمت مثل هذه الأدوات سابقاً، فأنت أيضاً بحاجة إلى تتبع الاستعلامات التي تصدر خلال تنفيذ صفحة واحدة أو خلال اتصال Connection واحد مع قواعد البيانات MySQL، وبشكل خاص عند استخدامك للـ Frameworks أو أنظمة ORM أو غيرها من الأنظمة التي قد تنشئ استعلامات SQL بشكل أوتوماتيكي وترسلها إلى قواعد بيانات MySQL دون أن تشعرك بماهية الاستعلام الذي تم إرساله.

    ملفات التسجيل والتتبع MySQL Logs

    محرك قواعد بيانات MySQL يوفّر لك بشكل افتراضي خاصية تسجيل وتتبع الاتصالات Connections مع قواعد البيانات والاستعلامات Queries المرسلة خلال هذا الاتصال، وذلك بتسجيلها في ملف تقوم بتحديد مساره ( أو يحدد افتراضياً في ملف الإعدادات ).

    ملاحظة: سأعتمد في شرحي على تركيبة ملفات السيرفر الشخصي Apache ضمن حزمة XAMPP من http://www.apachefriends.org ، لن يختلف الشرح كثيراً عن الحزم الأخرى، فقط عليك استشعار أماكن المجلدات المشروحة لديك.

    قم أولاً بالوصول إلى ملف إعدادات MySQL ، في:
    C:\xampp\mysql\bin\my.ini

    على اعتبار أن مسار تنصيب xampp هو C:\xampp ، قم بتغيير ذلك إلى ما ينطبق لديك

    الآن، ابحث عن:
    كود:
    general_log         = 0
    general_log_file    = "C:/xampp/mysql/data/mysql.log"
    ستكون هذه الخيارات بهذه القيم افتراضياً، قم بتغيير general_log من 0 إلى 1 إذا أردت التمتع بتسجيل وتتبع هذه الاستعلامات دائماً، يمكنك إبقاؤها 0 وتشغيلها بواسطة استعلام SQL حينما تحتاجها.

    بعد تغيير ما تريده هنا، قم بحفظ التغييرات وإعادة تشغيل Restart سيرفر MySQL لديك.

    ملاحظة: إذا لم تقم بتغيير قيمة general_log السابقة إلى 1 ، عندها ستحتاج إلى الاستعلام التالي:
    كود:
    set global general_log = 'on';
    قم بتنفيذ الاستعلام من خلال phpMyAdmin مثلاً أو من خلال كود PHP لتفعيل الخاصية.
    ولتعطيلها استبدل on بـ off متى أردت

    عند تشغيل هذه الخاصية ستلاحظ كتابة الاستعلامات والاتصالات الجديدة داخل ملف:
    C:\xampp\mysql\data\mysql.log

    لكن، نحن نريد متابعة هذا الملف بدلاً من فتحه مرة أخرى بعد كل استعلام جديد أو اتصال جديد.

    كيفية تتبع الملف النصي أولاً بأول؟

    بيئة Linux تحتوي على أداة تدعى Tail ، تتيح هذه الأداة لمستخدمها أن يتابع الجديد داخل ملف نصي معين من خلال شاشة الـ Terminal .

    بيئة Windows تفتقر لمثل هذه الأداة، لكن حسناً، هناك بديل للويندوز.

    http://unxutils.sourceforge.net/

    قم بتحميل مجموعة الأدوات من الرابط السابق، وبعد تحميلها قم بنسخ ملف tail.exe من داخلها إلى مجلد C:\windows .

    وبهذا نكون قد وفّرنا هذه الأداة في بيئة Windows، الآن اذهب إلى " ابدأ - Start "، في مربع البحث اكتب " cmd " ، ثم اضغط Enter من لوحة المفاتيح.

    ستظهر أمامك شاشة الأوامر السوداء، اكتب فيها:
    كود:
    tail -f C:\xampp\mysql\data\mysql.log
    tail هو اسم الأداة التي قمنا بنسخها،
    -f وتعني follow أو تابع هذا الملف
    وقم بتغيير مسار الملف حسب ما هو موجود لديك

    اضغط Enter من لوحة مفاتيحك لتبدأ بمتابعة هذا الملف.

    الآن اذهب إلى أي سكربت مكتوب بلغة PHP مثلاً وبتعامل مع قواعد البيانات، وقم باستخدامه من المتصفح. ثم عد إلى شاشة الأوامر السوداء وتمتّع بمشاهدة الاستعلامات ومراقبتها أولاً بأول!

    عذراً على الإطالة، لكن وجبت المشاركة

    تحياتي، أشرف السمهوري





    التعديل الأخير تم بواسطة أشرف السمهوري ; 23-02-2011 الساعة 09:38 PM
    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    جزاك الله خيرا .. معلومة مفيدة
    وهي مشابهة للامر watch mysqladmin process في بيئة linux حيث يقوم بطباعة الاستعلامات الجارية ومفيد جداً لمعرفة الضغط على قواعد البيانات من اي استعلام





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    34


    شكرا
    موضوع مفيد حقاً





    __________________
    mhndm
    Informations Technologie

  4. #4


    لم اجد

    general_log = 0
    general_log_file = "C:/xampp/mysql/data/mysql.log"

    تحياتي لك





    __________________
    زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
    - php >> وهو لحل مشاكل php وما حولها
    - Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار

  5. #5
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    شكراً لكم جميعاً،

    عبدالله ممكن تنسخ محتويات الملف؟





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  6. #6


    كود PHP:
    # Example MySQL config file for small systems.
    #
    # This is for a system with little memory (<= 64M) where MySQL is only used
    # from time to time and it's important that the mysqld daemon
    # doesn't use much resources.
    #
    # You can copy this file to
    # C:/xampp/mysql/bin/my.cnf to set global options,
    # mysql-data-dir/my.cnf to set server-specific options (in this
    # installation this directory is C:/xampp/mysql/data) or
    # ~/.my.cnf to set user-specific options.
    #
    # In this file, you can use all long options that a program supports.
    # If you want to know which options a program supports, run the program
    # with the "--help" option.

    # The following options will be passed to all MySQL clients
    [client
    # password       = your_password 
    port            3306 
    socket          
    "C:/xampp/mysql/mysql.sock"

    # Here follows entries for some specific programs 

    # The MySQL server
    [mysqld]
    port3306
    socket
    "C:/xampp/mysql/mysql.sock"
    basedir="C:/xampp/mysql" 
    tmpdir="C:/xampp/tmp" 
    datadir="C:/xampp/mysql/data"
    pid_file="mysql.pid"
    skip-external-locking
    key_buffer 
    16M
    max_allowed_packet 
    1M
    table_cache 
    64
    sort_buffer_size 
    512K
    net_buffer_length 
    8K
    read_buffer_size 
    256K
    read_rnd_buffer_size 
    512K
    myisam_sort_buffer_size 
    8M
    log_error
    ="mysql_error.log"



    # Don't listen on a TCP/IP port at all. This can be a security enhancement,
    # if all processes that need to connect to mysqld run on the same host.
    # All interaction with mysqld must be made via Unix sockets or named pipes.
    # Note that using this option without enabling named pipes on Windows
    # (via the "enable-named-pipe" option) will render mysqld useless!

    # commented in by lampp security
    #skip-networking
    skip-federated

    # Replication Master Server (default)
    # binary logging is required for replication
    # log-bin deactivated by default since XAMPP 1.4.11
    #log-bin=mysql-bin

    # required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id    1

    # Replication Slave (comment out master section to use this)
    #
    # To configure this host as a replication slave, you can choose between
    # two methods :
    #
    # 1) Use the CHANGE MASTER TO command (fully described in our manual) -
    #    the syntax is:
    #
    #    CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
    #    MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
    #
    #    where you replace <host>, <user>, <password> by quoted strings and
    #    <port> by the master's port number (3306 by default).
    #
    #    Example:
    #
    #    CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
    #    MASTER_USER='joe', MASTER_PASSWORD='secret';
    #
    # OR
    #
    # 2) Set the variables below. However, in case you choose this method, then
    #    start replication for the first time (even unsuccessfully, for example
    #    if you mistyped the password in master-password and the slave fails to
    #    connect), the slave will create a master.info file, and any later
    #    change in this file to the variables' values below will be ignored and
    #    overridden by the content of the master.info file, unless you shutdown
    #    the slave server, delete master.info and restart the slaver server.
    #    For that reason, you may want to leave the lines below untouched
    #    (commented) and instead use CHANGE MASTER TO (see above)
    #
    # required unique id between 2 and 2^32 - 1
    # (and different from the master)
    # defaults to 2 if master-host is set
    # but will not function as a slave if omitted
    #server-id       = 2
    #
    # The replication master for this slave - required
    #master-host     =   <hostname>
    #
    # The username the slave will use for authentication when connecting
    # to the master - required
    #master-user     =   <username>
    #
    # The password the slave will authenticate with when connecting to
    # the master - required
    #master-password =   <password>
    #
    # The port the master is listening on.
    # optional - defaults to 3306
    #master-port     =  <port>
    #
    # binary logging - not required for slaves, but recommended
    #log-bin=mysql-bin


    # Point the following paths to different dedicated disks
    #tmpdir = "C:/xampp/tmp"
    #log-update = /path-to-dedicated-directory/hostname

    # Uncomment the following if you are using BDB tables
    #bdb_cache_size = 4M
    #bdb_max_lock = 10000

    # Comment the following if you are using InnoDB tables
    #skip-innodb
    innodb_data_home_dir "C:/xampp/mysql/data"
    innodb_data_file_path ibdata1:10M:autoextend
    innodb_log_group_home_dir 
    "C:/xampp/mysql/data"
    #innodb_log_arch_dir = "C:/xampp/mysql/data"
    ## You can set .._buffer_pool_size up to 50 - 80 %
    ## of RAM but beware of setting memory usage too high
    innodb_buffer_pool_size 16M
    innodb_additional_mem_pool_size 
    2M
    ## Set .._log_file_size to 25 % of buffer pool size
    innodb_log_file_size 5M
    innodb_log_buffer_size 
    8M
    innodb_flush_log_at_trx_commit 
    1
    innodb_lock_wait_timeout 
    50

    [mysqldump]
    quick
    max_allowed_packet 
    16M

    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates

    [isamchk]
    key_buffer 20M
    sort_buffer_size 
    20M
    read_buffer 
    2M
    write_buffer 
    2M

    [myisamchk]
    key_buffer 20M
    sort_buffer_size 
    20M
    read_buffer 
    2M
    write_buffer 
    2M

    [mysqlhotcopy]
    interactive-timeout 
    تحياتي لك





    __________________
    زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
    - php >> وهو لحل مشاكل php وما حولها
    - Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار

  7. #7
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    قم - على سبيل التجرية - بإضافة السطرين تحت بند [mysqld] ..

    تحياتي،





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  8. #8


    جاري التجربة

    تحياتي لك





    __________________
    زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
    - php >> وهو لحل مشاكل php وما حولها
    - Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض