FreeBSD mysql が確保しようとするメモリ

調べる

エックスサーバー サーバー初期ページ

apache 2.2 - Mysql using high VIRT memory and RES is compartively - Server Fault

FreeBSD 10.1

mysqltuner
...
[--] Total buffers: 200.0M global + 1.1M per thread (51 max threads)
[OK] Maximum possible memory usage: 257.4M (12% of installed RAM)

top
...
57248 mysql        23  20    0   689M   446M uwait    0:02   0.00% mysqld

257.4M なのに SIZE 689M (RES 446M)

table_definition_cacheが原因の1つ

table_definition_cache の値が大きくなってしまっているようです。(912とか1400とか)
データベースを一つしか使っていないのであれば今までの400もあれば十分なので以下のように変更します

 show variables like 'table_definition_cache';
 +------------------------+-------+
 | Variable_name          | Value |
 +------------------------+-------+
 | table_definition_cache | 1400  |
 +------------------------+-------+

 vim /etc/my.cnf
 -----------------
 table_definition_cache=400
 -----------------
 service mysqld restart

MySQL5.6でメモリ使用量が肥大化したときの対処 | クロジカ

メモOFF: MySQL5.6がメモリを沢山お召し上がりになる件
MySQL maximum memory usage - Stack Overflow

5.6.9以降はデフォルト1400、5.5はデフォルト400
https://dev.mysql.com/doc/refman/5.6/ja/server-default-changes.html
https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

通常のテーブルキャッシュとは違い、ファイルディスクリプタを使わずにテーブル定義だけをキャッシュするのでスペースもとらず、テーブルが多いほどに有効です。デフォルトは、MySQL5.6.8までは400です。
数値は、400 + (table_open_cache / 2) が良いとされています。今回はこの値の変更をしてみます。

https://blog.ybbo.net/2015/12/26/change-table_definition_cache-on-mysql/

ver table_open_cache table_definition_cache
5.5 400 400
5.6.9以降 2000 1400

https://www.percona.com/blog/mysql-5-5-and-mysql-5-6-default-variable-values-differences/