• Michael Widenius's avatar
    Speed up connection time: · 615d51b6
    Michael Widenius authored
    -Change my_rnd() slightly to make it safer if two threads use it at the same time.
    -Avoid some sprintf and strmov in vio.
    -Changed thread_count to be automically incremented (instead of under LOCK_thread_count).
    -Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count.
    -Moved delete thd out from LOCK_thread_count.
    -Save some mysql_cond_broadcast(&COND_thread_count) calls.
    -Removed call to getsockname() during connect.
    -Initialize random generator without locks.
    
    Other things:
    -Added thread_safe_decrement32() and thread_safe_increment32()
    -Removed sql_rnd_with_mutex() and get_thread_running()
    
    Thanks to Yoshinori Matsunobu for the benchmark of connection speed and to
    Domas Mituzas for the inspiration for many of the fixes.
     
    
    include/violite.h:
      Change desc to a string pointer
    mysql-test/suite/perfschema/r/all_instances.result:
      Added new mutex
    mysys/my_rnd.c:
      Change my_rnd() slightly to make it safer if two threads use it at the same time.
    sql/event_scheduler.cc:
      Changed thread_count to be automically incremented
      Moved some safe things out from LOCK_thread_count.
      Simplify deleting of THD for running thread.
    sql/mysqld.cc:
      Changed thread_count to be automically incremented
      Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count
      Added delete_running_thd()
      Moved delete thd out from LOCK_thread_count
      More DBUG_ENTER
      Only call  mysql_cond_broadcast(&COND_thread_count) if thread_count is 0
      Removed call to getsockname() (old not anymore needed check)
    sql/mysqld.h:
      Removed sql_rnd_with_mutex() (not needed anymore)
      Removed not used function get_thread_running()
      Added thread_safe_decrement32() and thread_safe_increment32()
      Simplified dec_thread_running() and inc_thread_running()
    sql/sql_class.cc:
      Removed thd_lock_thread_count() and thd_unlock_thread_count()
      Initialize random generator without locks
    sql/sql_insert.cc:
      Changed thread_count to be automically incremented
    sql/sql_parse.cc:
      Changed thread_count to be automically incremented
    vio/vio.c:
      Don't generate 'desc' with sprintf/strmov. Assign a pointer instead.
      (Good enough as this is just for debugging)
    615d51b6
my_rnd.c 1.99 KB