标签: innodb

InnoDB排序真的很慢吗?

我在myISAM中拥有了所有表,但是当我长时间运行更新作业时,表级锁定开始杀了我.我将我的主表转换为InnoDB,现在我的许多查询都需要花费1分钟才能完成,这些查询几乎是在myISAM上完成的.他们通常陷入困境Sorting result.我做错什么了吗?

例如 :

SELECT * FROM `metaward_achiever` 
 INNER JOIN `metaward_alias` ON (`metaward_achiever`.`alias_id` = `metaward_alias`.`id`) 
 WHERE `metaward_achiever`.`award_id` = 1507  
 ORDER BY `metaward_achiever`.`modified` DESC 
 LIMIT 100  
Run Code Online (Sandbox Code Playgroud)

现在大约需要90秒.这是描述:

+----+-------------+-------------------+--------+-------------------------------------------------------+----------------------------+---------+---------------------------------+-------+-----------------------------+
| id | select_type | table             | type   | possible_keys                                         | key                        | key_len | ref                             | rows  | Extra                       |
+----+-------------+-------------------+--------+-------------------------------------------------------+----------------------------+---------+---------------------------------+-------+-----------------------------+
|  1 | SIMPLE      | metaward_achiever | ref    | metaward_achiever_award_id,metaward_achiever_alias_id | metaward_achiever_award_id | 4       | const                           | 66424 | Using where; Using filesort | 
|  1 | SIMPLE      | …
Run Code Online (Sandbox Code Playgroud)

mysql sql database myisam innodb

3
推荐指数
1
解决办法
8467
查看次数

mySQL - 使用mysqli应用行级锁定

使用PHP的mysqli如何应用行级锁定?

行级别锁定会阻止编辑当前符合条件的当前行的任何人吗?但他们是否阻止用户插入符合您条件的行?

谢谢

php mysql innodb locking

3
推荐指数
1
解决办法
3404
查看次数

myisam表类型对于日志表(mysql)真的更好吗?

我一直在阅读是否使用myisam或innodb作为日志表(大量写入,很少读取).虽然有些人说myisam总体上更快,资源更少,但其他人说myisam实际上是更糟糕的选择,因为它只有表级锁定.

有没有人有这种情况的实际经验并且小心分享他们的建议?

提前致谢

mysql database-design myisam innodb

3
推荐指数
1
解决办法
1067
查看次数

从CakePHP 2.x中完全删除查询缓存

我发生了以下查询

 public function test()
 {
    $uuid = substr( String::uuid() , 4 , rand( 7 , 10 ) );
    $name = $uuid;

    $event = $this->Event->getEvent( array( "event_id" => "5240e695-9acc-4e32-9b98-1aecb3d0838" ) );
    $event[ "event_name" ] = $name;

    $this->Event->update( $event );

    debug( $this->Event->search( array( "event_id" => $event[ "event_id"] ) )[ 0 ][ "event_name" ] );

    debug( $this->Event->search( array( "event_id" => $event[ "event_id"] , "limit" => 1 ) )[ 0 ][ "event_name" ] );
}
Run Code Online (Sandbox Code Playgroud)

我为从mySQL(InnoDB)表中检索的特定事件分配一个随机名称event,为其分配一个随机的新名称,并将其保存回数据库中.

当我在此代码中运行最后两个语句时,结果不一样,请注意第二个查询中的最后一个参数只是将LIMIT 1添加到第二个查询的末尾.(我没有使用CakePHP 2.x搜索表的典型方法).第一次搜索调用的结果将产生先前请求的先前结果,而第二次搜索调用将在event表中产生实际当前更新的名称.

我一直在寻找如何从数据源对象中删除查询缓存COMPLETELY,但无法弄清楚如何.我已经尝试在数据源对象上使用flushMethodCache(),但它什么也没做,我试过设置 …

mysql caching innodb cakephp cakephp-2.3

3
推荐指数
1
解决办法
2229
查看次数

Mysql服务无法启动,InnoDB初始化函数错误

因此,今晚似乎无处不在,我的wordpress网站崩溃了,我已将其追溯到mysql问题。Mysql不会在服务器上启动,因为它一直在失败。

这是我从日志中得到的信息:

140226 08:54:11 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
140226 08:58:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140226  8:58:20 [Note] Plugin 'FEDERATED' is disabled.
140226  8:58:20 InnoDB: The InnoDB memory heap is disabled
140226  8:58:20 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140226  8:58:20 InnoDB: Compressed tables use zlib 1.2.3
140226  8:58:20 InnoDB: Using Linux native AIO
/usr/libexec/mysqld: Can't create/write to file '/dev/shm/mysql/ibOqUOjF' (Errcode: 2)
140226  8:58:20  InnoDB: Error: unable to create temporary file; errno: …
Run Code Online (Sandbox Code Playgroud)

mysql database wordpress innodb

3
推荐指数
2
解决办法
1万
查看次数

为什么SELECT FOR UPDATE仅在事务中起作用?

我认为我对SELECT FOR UPDATE构造感到困惑.
例:

mysql> select * from employees2;  
+-------+----------+--------+-----------+  
| EmpId | EmpName  | DeptId | EmpSalary |  
+-------+----------+--------+-----------+  
|     1 | John     |      1 |   5000.00 |  
|     2 | Albert   |      1 |   4500.00 |  
|     3 | Crain    |      2 |   6000.00 |  
|     4 | Micheal  |      2 |   5000.00 |  
|     5 | David    |   NULL |     34.00 |  
|     6 | Kelly    |   NULL |    457.00 |  
|     7 | Rudy …
Run Code Online (Sandbox Code Playgroud)

mysql perl innodb locking transactions

3
推荐指数
1
解决办法
6485
查看次数

尝试将表转换为InnoDB时出错

我在生产中使用Percona 5.1服务器,在我们的生产数据库中使用MyISAM表.为了支持数据库事务,我需要将表更新为InnoDB.我们目前正在开发中使用MySQL 5.5,并且迁移脚本可以通过简单ALTER TABLE xyz ENGINE=InnoDB;查询运行良好.但是在生产测试中(针对生产数据库的副本),我们收到了一个错误:

mysql> ALTER TABLE `xyz` ENGINE=InnoDB;
ERROR 1005 (HY000): Can't create table 'InnoTest.#sql-644_dd133' (errno: 1478)
Run Code Online (Sandbox Code Playgroud)

在我们的开发服务器上,使用与生产测试相同的数据库转储:

mysql> ALTER TABLE `xyz` ENGINE=InnoDB;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 2

mysql> show warnings;
+---------+------+------------------------------------------------------------+
| Level   | Code | Message                                                    |
+---------+------+------------------------------------------------------------+
| Warning | 1478 | InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
| Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT.                       |
+---------+------+------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

和统计数据:

mysql> SHOW VARIABLES LIKE …
Run Code Online (Sandbox Code Playgroud)

mysql innodb percona

3
推荐指数
1
解决办法
1740
查看次数

验证Mariadb 10.1加密

我在Maria DB 10.1.8(https://mariadb.com/kb/en/mariadb/data-at-rest-encryption/)上设置了表级InnoDB数据库加密.

我想知道是否有任何方法可以确认数据是否真正加密.我已经尝试在表中搜索/ var/lib/mysql/ibdata1中的样本数据,但我不知道这是否是可靠的测试.

encryption innodb mariadb

3
推荐指数
1
解决办法
2105
查看次数

复合键VS主键+不唯一索引

这是我有的:

table content : cat_id product_id data1 data2 etc.
这些类别显然不是唯一的.产品ID是独一无二的.

2 queries : 1 -- SELECT * WHERE cat_id = :cat - must be as quick as possible 2 -- SELECT * WHERE product_id = :prodId In second select, I can add : AND cat_id = :cat

效率更高的是什么?

  • 1 - cat_id上的索引(不唯一)(适用于选择1)
  • 2 - product_id上的主键(唯一 - >选择2的优秀)
  • 3 - product_id上cat_id + PK上的索引(非唯一)(分别适用于1和2)
  • 4 - 使用复合[cat_id + product_id]的唯一约束(适用于1和2)
  • 5 - 与4相同,但将复合定义为PK
  • 6 - 复合(4或5)+单指数/ PK

有关信息,我将在每个类别中有大约20种产品和许多类别(比如3000) - 并且(因为它在表中是独一无二的)一个产品只属于一个类别 …

mysql database innodb database-indexes

3
推荐指数
1
解决办法
1274
查看次数

如何用Laravel锁定表?

我想在事务内锁定表。像这样:

  DB::transaction(function (){
    DB::statement('LOCK TABLES important_table WRITE');
    //....
  });
Run Code Online (Sandbox Code Playgroud)

但是,该行DB::statement('LOCK TABLES important_table WRITE');始终会触发以下错误:

SQLSTATE [HY000]:常规错误:2014当其他无缓冲查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。另外,如果您的代码只打算针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。(SQL:LOCK TABLES officeSeal WRITE)

如何锁定Laravel中的桌子?

mysql innodb locking laravel

3
推荐指数
1
解决办法
2987
查看次数