我们将安装一个将访问日志写入 MySQL 表的网络服务器。访问日志当然会变得非常非常大,所以这将是一个独立于常规数据的 MySQL 实例,我们将更自由地删除二进制日志。
我们还必须从表中删除旧项目,这意味着删除命令和优化命令会使插入等待。
有没有办法让延迟插入保留顺序,并且偶尔会容忍延迟插入队列中的许多项目?
如果插入物会混淆,那么它就不是一个展示塞子。我们可以使用时间戳和毫秒进行排序。
另外,我们可以防止索引文件的浪费增长吗?也许我们可以像优化数据文件一样优化索引?要求索引固定宽度是否可以防止数据旋转浪费问题?
FWIW,我认为这是错误的做法;除非您需要对网络服务器访问进行实时报告,否则将日志写入文件并批量加载。
话虽如此,有一种方法可以做你想做的事,如果我理解正确的话,那就是在对你的数据库进行维护时排队挂起的插入。换句话说,将网络服务器的操作与某种缓冲区中的数据库中
INSERT
的实际操作分离。INSERT
方法是使用两个实例,一个是直接写入的,您将在其中使用黑洞存储引擎,另一个是您将复制到的实例,这将是您的“真实”数据库。挂起的插入将存在于二进制日志中;您只需停止复制到从服务器,执行维护,然后再次恢复复制,从服务器/真实数据库就会赶上来。从站可供SELECT
s 用于您的报告。你甚至可以用于负载平衡的多主机,或者有多个从机并在维护活动期间在它们之间切换。