当前位置: 首页 > 面试题库 >

如何确定mysql索引是否完全适合内存

曹华荣
2023-03-14
问题内容

有没有一种方法可以确定mysql索引是否完全适合可用内存?如果是这样,我将如何:

  • 确定mysql索引的大小
  • 确定应用程序的可用内存
  • 确定索引是否完全适合内存

问题答案:

取决于存储引擎

SELECT FLOOR(SUM(index_length)/POWER(1024,2)) IndexSizesMB
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','performance_schema','mysql');

从中减去key_buffer_size。如果答案> 0,则是

InnoDB(缓存数据和索引页)

SELECT FLOOR(SUM(data_length+index_length)/POWER(1024,2)) InnoDBSizeMB
FROM information_schema.tables WHERE engine='InnoDB';

从中减去innodb_buffer_pool_size。如果答案> 0,则是

我在 DBA StackExchange中 写过这个
****

在专用的数据库服务器上,确保InnoDBSizeMB+IndexSizesMB不超过75%的RAM。



 类似资料:
  • 区分度不高的字段不适合做索引,因为索引页是需要有开销的,需要存储的,不过这类字段可以做联合索引的一部分。

  • 问题内容: 我们的MySql表有2500万行 以下是表中的列 以上我们在c_id,c_name,s_id,l_type,域列上具有正常索引 我打算在域,l_time,l_type列上添加复合索引。因此,现在我可以删除域上的单个索引了吗? 谢谢 问题答案: 复合索引的任何前缀也将单独用作索引。因此,如果您有一个复合索引,则相当于在和上都有索引。无需分别将这些索引分开,它们将是多余的并且浪费空间。 因

  • 问题内容: 我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持unix)或显示JOptionPane并要求用户输入密码(如果操作系统支持图形界面(例如Windows))。 有人可能会争辩说,在上述两种情况下控制台始终可用,因此控制台输入就足够了。但是问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一

  • 问题内容: 我正在尝试在多边形算法中创建一个快速的 2D点,以用于点击测试(例如)。对于有效技术的建议将不胜感激。 问题答案: 对于图形,我宁愿不要整数。许多系统使用整数进行UI绘制(像素毕竟是ints),但是macOS例如对所有内容都使用float。macOS仅知道点,并且一个点可以转换为一个像素,但是根据显示器分辨率,它可能转换为其他像素。在视网膜屏幕上,半点(0.5 / 0.5)是像素。不过

  • 我试图引用在文档中间添加的内嵌形状。我目前的解决方案是短期的,我想征求意见,寻求更好的解决方案。 情况是,我正在使用添加一个内联形状。在文档的一半处添加图片。这样做的问题是,如果在插入图片的位置之后有内联形状,那么我添加的内联形状的索引号不仅仅是添加到文档中的第n个形状。内线形状。count不会指我刚才添加的图片,它指的是文档末尾的图片。 我目前的解决方法是实际查看文档,计算下面输入新图片的形状数

  • 问题内容: 到目前为止,我所看到的所有示例都涉及阻塞(通过运算符)获取结果。 我当前的方法涉及传递指向结构的指针: goroutine完成时会写的内容。然后,只要方便就可以进行检查。您有更好的选择吗? 我真正想要的是Qt风格的信号槽系统。我有一个预感,解决方案看起来几乎是微不足道的(有 很多 未开发的潜力),但是我对这种语言还不十分了解。 问题答案: 您可以使用“逗号,可以”模式(请参阅其页面上的