Hi, In fact, this is a good question. Therefore, I gonna try to answer.
> 1) What is MySQL using the handles for? Handles are nothing and all on Windows. Nothing because they are only pointers to hidden internal struct. And all, because, Handle are everywhere if you try to develop Win32 App. There are 3 kinds: Users: Window, Cursor, Menu,... GDI: all graphic objects such as Brush, Pen,... Kernel: Access token (ACL), Console input, Event, File, Heap, Mutex, Pipe, Process, Semaphore, Socket, Thread, Timer, ... A database server is therefore a great consumer of kernel Handles. > 4) How does a MySQL server handle millions of queries on a large table? > Will it hit an upper limit of Handles that it can allocate? The per-process theoretical limit on kernel handles is 2^24. However, handles are stored in the paged pool (kernel reserved memory), so the actual number of handles you can create is based on available memory. So, the number of handles that you can create on 32-bit Windows is significantly lower than 2^24. Example on Windows2000, max pool size is 300 MB (I don't know on most recent windows versions). But be sure MySQL server can handle millions of queries on a large table. > 2) Is there any way to stop MySQL from consuming so many Windows > resources? I investigated and can summarize with a simple test I made with a 5.0.37 compiled with all storage engines (and verified with a 4.1.21): MySQL allocates 43000 handles. I recompiled it without InnoDB and BDB, and MySQL allocates now 108 handles at startup. I'm not an "indeep" Innodb's specialist neither BDB, but I know they have row locking mechanism in difference of MyIsam but I'm sure that they are great consumers of Mutex. > Windows of course runs slow with this many handles allocated. Yes, not because of number of handles (logical resources) but because of physical resources, especially RAM, and perhaps by-design in OS kernel. Regards, Geoffroy -----Message d'origine----- De : Geoffroy Cogniaux [mailto:[EMAIL PROTECTED] Envoyé : dimanche 27 mai 2007 23:13 À : 'mos'; mysql@lists.mysql.com Objet : RE: MySQL 5.0 creates 100,000 Window handles Hi, Try [EMAIL PROTECTED] instead. Bye. Geof. -----Message d'origine----- De : mos [mailto:[EMAIL PROTECTED] Envoyé : vendredi 25 mai 2007 06:41 À : mysql@lists.mysql.com Objet : MySQL 5.0 creates 100,000 Window handles I noticed if my program executes a lot of Select statements, Windows XP will slow down when the program completes. I did some investigating and mysqld-nt.exe has close to 100,000 handles created when my program ends (shown in Task Manager and SysInternals Process Explorer). As each Select statement is executed, 2 handles are created. These handles will stay allocated until the MySQL server is stopped (stopping my program won't free up the handles). Windows of course runs slow with this many handles allocated. 1) What is MySQL using the handles for? 2) Is there any way to stop MySQL from consuming so many Windows resources? 3) Is it like this on Linux? 4) How does a MySQL server handle millions of queries on a large table? Will it hit an upper limit of Handles that it can allocate? Note: it does not appear to allocate more handles if the query is found in the query cache. Mike -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]