Windows has a hard coded file descriptor limit of 2048 when using the C runtime library which limits the number of files that can be opened simultaneously. This can be a significant performance issue when hosting a busy MySQL server on Windows as MySQL uses the C runtime library to access the file system. This limit of 2048 simultaneously opened files can cause performance issues for MySQL when the table cache value needs to be higher than this. To improve the performance of repeatedly opening tables MySQL places these tables in the table cache, however on a busy MySQL server the table cache may need to be set to a value of several thousand for optimal performance. The double whammy here is that the MyISAM database engine in MySQL needs to open two file descriptors for each unique open table. So by the time you account for temporary tables and other files the maximum effective table cache value for MySQL on Windows when using the MyISAM database engine is actually a good deal less than half of the hard coded file descriptor limit of 2048 imposed by Windows (circa 950 in my experience). So what can be done to work around this?
|Increasing MySQL open file limit on Windows||11410||4||4 years 47 weeks ago|
|Backing up and restoring MySQL databases from command line||4291||80%||0||5 years 27 weeks ago|
|Backing up MySQL automatically using a batch file||23471||100%||23||5 years 28 weeks ago|
|Assigning MySQL privileges via the command line||36623||100%||4||5 years 35 weeks ago|
|Creating a MySQL user via the command line||75985||100%||6||5 years 36 weeks ago|
|Creating a MySQL database via the command line||109817||80%||9||6 years 1 week ago|
|Install and Configure MySQL 5 on Windows||147168||80%||37||6 years 3 weeks ago|