我有一个奇怪的mysql查询速度问题,我正在努力解决这个问题。我将mysql数据库从一台服务器移动到另一台服务器时,本应更加健壮的服务器运行某些mysql查询的速度几乎是原始服务器的4倍。经过几天的调试,我终于发现在存储过程的where子句中使用变量的方式存在巨大的速度差异。下面是一些示例:
快速:
set @s = Concat('delete from visitids where VisitID=''',xVisitID,''' and OrgCode=''',xOrgCode,'''
我试图让我们的mySQL数据库运行得更快,我分析了我们的慢查询日志,最常见的慢查询是这样的:
CREATE TABLE IF NOT EXISTS `wp_bad_behavior` (
`id` INT(11) NOT NULL auto_increment,
`ip` TEXT NOT NULL,
`date` DATETIME NOT NULL default '0000-00-00 00:00:00',
`request_method` TEXT NOT NULL,
`request_uri` TEXT NOT NULL,
一些问题前的信息:
我正在尝试将整个表从MySQL转换为SQLite (以及其他表,但从那里开始)。这是必须用java完成的事情,并且必须能够转换大量的数据。但是,在执行我的SQLite语句(相当大)时,整个程序只会锁定并冻结。还有一个事实是,当我查看SQLite数据库崩溃后,没有添加任何一行。
其他信息:
这些表有5列: int \ varchar(32) \ int _ int
这些表有两个键:第1列是主键(id),第2列是用户名的唯一键。
Java代码:
MySQL db = new MySQL();
StringBuilder sb = new StringBuilde
如何在只使用MySQL表的服务器上决定启用/禁用InnoDB查询缓存。例如,如果启用了缓存,那么应该如何输出:
SHOW STATUS LIKE 'Qcache%';
被解释为做出决定?或者可以执行哪些其他查询/分析来获得更多信息,然后应该如何解释这些查询/分析?如果要启用它,应该如何确定它的大小?我在Amazon上,使用MySQL 5.6。我将结束大约250个单独的数据库,总计200 in的空间。
操作系统为ubuntu 16.04
MySQL版本:MySQL Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
在我的系统中
/etc/mysql/ -> ls
conf.d debian.cnf debian-启动my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我有一个MySQL数据库和一个表,其中有一个names列,如下所示:
id name age
1 samuel lee 31
2 doug sokira 32
3 vernon smith 33
我想在数据库里查一下名字。到目前为止,我有这个查询:
SELECT * FROM table WHERE name LIKE 's%'
这将返回ID为1的第一条记录。
但是,我希望查询进一步从由空格分隔的文本中进行搜索。因此,从字面上讲,搜索应该通过名字和姓氏来完成。
我愿意坚持这种数据库设计,名字和姓氏存储在一个单独的列中。
因此,