标签: innodb

什么是队列访问并发解决方案?

我试图找出实现队列系统的难度.我知道如何实现一个基本队列,所以我将解释一下我之后的一些背景:

我将实现一个将放置消息的队列,这将来自多个用户,消息将被安排在用户定义的时间发布(允许多次出现,精确度为Minutes,从UI角度来看,我将限制:"每分钟或每小时"出现,但ID仍然能够处理这个系统).

这是我的问题所在:最终我可能处于某种情况(也许不是)当前需要发布许多消息的情况,我希望有几个进程(多个脚本实例)运行来获取[x,10,25]一次从队列中发送的消息数并处理它们.问题是:如何执行此操作以便每个实例处理唯一的消息(不处理已由另一个实例处理的内容)?我担心当前的连接,如何锁定记录,以及我可能没有想到的任何其他事情.

我将使用的技术是PHP和MySQL.我正在寻找上述的一些解决方案,我应该在我的搜索,真实世界的例子,想法,评论和想法中使用的术语?

谢谢大家!

我遇到的一个解决方案是使用Amazon Simple Queue Service ...它承诺独特的消息处理/锁定http://aws.amazon.com/sqs/

php mysql innodb transactions process

0
推荐指数
1
解决办法
1031
查看次数

mysql innodb中的外键引用

简单地说:我有一个包含2列的表:一个是用户名,另一个是昵称.我有另一个表,我有2列:一个是用户名,另一个是countNicknames.

我希望countNicknames包含每个用户拥有的昵称数量(每当我向table1插入一个新昵称时,table2.countNicknames下的值将自动更新.

你能否写下如何构建第二个表来引用第一个表?

mysql sql innodb calculated-columns

0
推荐指数
1
解决办法
208
查看次数

这是一个问题,我以某种方式设法在MySQL表中获得两个具有相同名称的索引?

不知怎的,我设法得到两个名为user_id的索引,如下所示.我应该放弃,重命名和重建其中一个,还是没问题?

SHOW INDEXES FROM core_item;

+-----------+------------+-----------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| Table     | Non_unique | Key_name  | Seq_in_index | Column_name     | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-----------+------------+-----------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| core_item |          0 | PRIMARY   |            1 | id              | A         |      593642 |     NULL | NULL   |      | BTREE      |         | 
| core_item |          0 | user_id   |            1 | user_id         | A         |       11416 |     NULL | NULL   |      | BTREE      |         | 
| core_item …
Run Code Online (Sandbox Code Playgroud)

mysql innodb

0
推荐指数
1
解决办法
52
查看次数

MySql + InnoDB + PHP单引号歧视?

好的,我最近将一些表转换为InnoDB存储引擎,每当我在INSERT语句的列列表中使用单引号时,我就会收到错误:

INSERT INTO 'Table' ('Col1', 'Col2') VALUES ('Val1', 'Val2')
Run Code Online (Sandbox Code Playgroud)

当我厌倦了使用phpMyAdmin生成一个正确的语句时,它看起来几乎一样,所以我将它粘贴在我的应用程序中,并且它有效.然后我的下一个声明有同样的错误,所以我开始怀疑.经过一段时间的游戏,我发现问题是查询需要一个反向滴答而不是单引号,但不是整个事情.

INSERT INTO `Table` (`Col1`, `Col2`) VALUES ('Val1', 'Val2')
Run Code Online (Sandbox Code Playgroud)

工作,所以它不像MySql不理解单引号.这里发生了什么?我也不能像以前那样使用MyISAM保留未加引号的列(即:表(Col1,Col2))

php mysql innodb

0
推荐指数
1
解决办法
334
查看次数

什么加入使用?

我有两个不同的表,只有一个字段具有相同的名称('用户名').他们彼此没有关系.我只需要一个查询就可以选择其中包含此字段等于给定值的所有行.

我想出了这个,这当然是错误的... SELECT*FROM user AS a FULL JOIN future_user AS b WHERE a.username = x OR b.username = x

这些我正在谈论的表格:

CREATE TABLE user
(
uid      mediumint(6) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,

username varchar(15) NOT NULL,
password varchar(15) BINARY NOT NULL,
mail     varchar(50) NOT NULL,

name     varchar(50) NOT NULL,
surname  varchar(50) NOT NULL,
birth    char(10) NOT NULL,
sex      tinyint(1) unsigned NOT NULL default 1,

address  varchar(50) NOT NULL,
city     varchar(50) NOT NULL,
zip      char(5) NOT NULL,
province varchar(50) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

mysql sql innodb

0
推荐指数
1
解决办法
66
查看次数

在InnoDB中定义关系时的CASCADE

我想知道在InnoDB中定义关系时代表CASCADE的是什么?

我看到它与动作有关:ON DELETE&ON UPDATE.

我是否必须在表格中的每个关系上将其设置为CASCADE?

mysql innodb database-relations cascading-deletes sql-delete

0
推荐指数
1
解决办法
1336
查看次数

MySQL主键列不是唯一的吗?

我在MySQL数据库中有下表:

CREATE TABLE `datavalues` (
  `ValueID` int(11) NOT NULL AUTO_INCREMENT,
  `DataValue` double NOT NULL,
  `ValueAccuracy` double DEFAULT NULL,
  `LocalDateTime` datetime NOT NULL,
  `UTCOffset` double NOT NULL,
  `DateTimeUTC` datetime NOT NULL,
  `SiteID` int(11) NOT NULL,
  `VariableID` int(11) NOT NULL,
  `OffsetValue` double DEFAULT NULL,
  `OffsetTypeID` int(11) DEFAULT NULL,
  `CensorCode` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'nc',
  `QualifierID` int(11) DEFAULT NULL,
  `MethodID` int(11) NOT NULL DEFAULT '0',
  `SourceID` int(11) NOT NULL,
  `SampleID` int(11) DEFAULT NULL,
  `DerivedFromID` int(11) DEFAULT NULL,
  `QualityControlLevelID` int(11) NOT NULL …
Run Code Online (Sandbox Code Playgroud)

mysql innodb phpmyadmin

0
推荐指数
1
解决办法
7628
查看次数

简单的PHP表单不提交

该页面似乎没有写入数据库.我有一种感觉,这可能是数据库错误,而不是表单提交本身.我找不到任何错误,我似乎无法弄清楚为什么数据库不接受我的参数.请参阅下面的代码和数据库结构.如果您需要更多信息,请与我们联系.

    <?php
session_name('shipshapeLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();

define('INCLUDE_CHECK',true);

require('connect.php');
//require_once('business.php');

if(empty($_SESSION['id']))
{
    header("Location: index.php");
    exit;
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Ad Posting</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <link rel="stylesheet" type="text/css" href="advertise.css" />
    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script>
  $(function() {
    $( "#from" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 3,
      onClose: function( selectedDate ) {
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 3,
      onClose: function( selectedDate ) { …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli pdo innodb

0
推荐指数
1
解决办法
91
查看次数

MySql删除需要很长时间

我有一个查询,基于主键删除一组300条记录.

该表大约有250,000条记录和4列(int PK,varchar,date,tinyint),因此它应该是一个非常易于管理的大小,但是,在没有运行其他查询的情况下删除大约需要2分钟,这看起来相当多它删除的行数和表的大小.

sql看起来像这样:

-- this takes less than 1 second
CREATE TEMPORARY TABLE IF NOT EXISTS temp AS (
    SELECT id
    FROM some_other_table
    WHERE ...
    LIMIT 300
);  

-- id is the primary key
-- this takes upwards of 2 minutes
DELETE FROM queue WHERE id in(
    select id from temp
);
Run Code Online (Sandbox Code Playgroud)

该表只有一个附加索引,没有外键关系.有什么想法,我可以做些什么来加快这个速度?

mysql sql innodb query-optimization

0
推荐指数
1
解决办法
1033
查看次数

MySQL 5.5 innodb_large_prefix配置设置未生效

我在Debian Linux上运行MySQL 5.5.55,我想启用该innodb_large_prefix设置,因此我可以拥有大于767字节的表INDEX.

我的/etc/mysql/my.cnf文件中有以下配置:

[mysqld]
...
innodb_file_per_table=1
innodb-large-prefix=ON
innodb_file_format=barracuda
Run Code Online (Sandbox Code Playgroud)

(我也试过innodb_large_prefix=ON了.)

更新:我双重检查,并没有其他的配置文件存在如/etc/my.cnf,/usr/etc/my.cnf,~root/.my.cnf,~mysql/.my.cnf)

但是当我重新启动MySQL时,活动配置显示为:

| innodb_file_format             | Barracuda              |
| innodb_large_prefix            | OFF                    |
| innodb_file_per_table          | ON                     |
Run Code Online (Sandbox Code Playgroud)

如果我从MySQL CLI手动更改GLOBAL设置,则设置似乎会更改:

mysql> SET GLOBAL innodb_large_prefix = ON;
...
| innodb_large_prefix            | ON                     |
Run Code Online (Sandbox Code Playgroud)

...但是当我尝试实际使用"大前缀"时,我收到一个错误:

mysql> alter table [...]
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
Run Code Online (Sandbox Code Playgroud)

MySQL innodb_large_prefix设置的文档说明使用此设置有几个先决条件:

  1. MySQL版本5.5.14或更高版本✔ …

mysql innodb

0
推荐指数
1
解决办法
5984
查看次数