| Bug #88937 | mysql client history file grows without bounds, slows down connecting to server | ||
|---|---|---|---|
| Submitted: | 15 Dec 2017 11:27 | Modified: | 19 Dec 2017 11:47 |
| Reporter: | Riccardo Pizzi | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Logging | Severity: | S3 (Non-critical) |
| Version: | 5.6.38, 5.7.20 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[19 Dec 2017 11:47]
MySQL Verification Team
Hello Riccardo Pizzi, Thank you for the report and feedback. Observed the delay while connecting/disconnecting when .mysql_history file size was large(>100Mb delay is noticeable). Thanks, Umesh

Description: The file .mysql_history created by the mysql client seems to grow without bounds. When its size becomes important (> 100MB), connecting to a server with the client becomes slow, and the slowness increases with history file size. This also happens at logout time, when the client has to update the history - I would expect the client to only append to it and this should be fast, however it is re-reading the entire file for some reason, which seems sub-optimal. How to repeat: Create a huge .mysql_history file with the following script: echo "select 1" > file.txt; for i in {1..24}; do cat file.txt file.txt > file2.txt && mv file2.txt file.txt; done; mv file.txt .mysql_history Try to connect to localhost: mysql -u user -p .... Wait several seconds (depending on speed of your home directory's storage) before getting a prompt Suggested fix: Limit the history file to a rotation of, let's say, last 5000 statements or so (maybe make that number configurable)