Questions tagged «mysql»

MySQL的所有版本(不是Microsoft SQL Server)。如果与此问题相关,还请添加特定于版本的标记,例如mysql-5.7。

3
使用复制进行横向扩展
阅读了使用复制进行横向扩展后,如何将不同的查询路由到不同的服务器,例如,SELECT我想路由到从属服务器和NON-SELECT主服务器。我假设可以使用haproxy作为负载均衡器,但是我发现在haproxy级别的查询之间无法区分开吗?另外,假设某人已直接到达主服务器,主服务器如何识别这是SELECT查询并显示发送给从属服务器或负载平衡器。

1
MySQL下的数据库大小与磁盘上的实际大小之间存在实质性差异
当我检查MySQL下数据库的大小时,得到以下信息: MariaDB [(none)]> SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+----------------------+------------------+ | Data Base Name | Data Base Size in MB | Free …
8 ubuntu  mysql  mariadb 

1
用NOT NULL定义的MySQL列允许为空
我不久前创建了一个表,并开始向其中添加数据。最近,我在其中添加了新列(address),并将其NOT NULL作为新列的一部分。旧行(预添加)仍然为空,这在定义中创建了一条警告。但是,仍允许带有新列的新行插入空值。 新列的预添加内容是否为空?如果是这样,有没有办法告诉MySQL即使以前不允许它呢? mysql> show create table my_table\G *************************** 1. row *************************** Table: my_table Create Table: CREATE TABLE `my_table` ( `entry_id` int(11) NOT NULL auto_increment, `address` varchar(512) NOT NULL, `follow_up_to` int(11) default NULL, PRIMARY KEY (`entry_id`), KEY `follow_up_to` (`follow_up_to`), CONSTRAINT `my_table_ibfk_1` FOREIGN KEY (`follow_up_to`) REFERENCES `my_table` (`entry_id`) ON UPDATE CASCADE …
8 mysql  null 

2
大量插入的InnoDB表不会使用我所有的CPU
我有一个数据包日志数据库,几乎从未查询过。它只需要在插入时快速。我之所以使用InnoDB,是因为我想保持ACID合规性,因为即使丢失单个数据包也可能损害我们的客户。在性能调整方案中,我通过多个数据库连接将1,000,000个数据包发送到服务器。但是,无论我在my.cnf中使用什么设置,我都无法使mysqld进程在具有12个核心的系统上使用超过900%的CPU。(盒子上没有其他东西。) 我设置了以下内容 innodb_file_per_table = 1 innodb_write_io_threads = 64 innodb_read_io_threads = 64 innodb_thread_concurrency = 0 如果使用MyISAM,则可以在大约6秒钟内获得所有写入的数据包。但是InnoDB大约需要25。我可以让MySQL使用其余的系统资源并更快地插入吗? 编辑:这是表的架构: +-------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------------------+------+-----+---------+-------+ | t | bigint(20) unsigned | YES | | NULL | | | a | char(1) | YES | …

4
出于身份验证目的而拆分“用户”表是一个好主意吗?
假设我的站点中有一个用户表,该表中大约有2-3百万个用户(记录)。 为了加快我的登录过程,这是拆分用户表的好方法,一个用户表用于提供信息,另一个用于用户登录。 如果我们可以从一个表中运行类似于以下查询的查询: select username,password from users where username=`test` AND password=**** 是否有必要将其拆分,这会加快我的网站的登录过程吗?

4
MySQL群集RAM要求
从MySQL 5.1开始,数据不再需要完全存储在内存中。 我已经读到索引列(我认为整个索引结构)必须仍在内存中(MySQL High Availability,2010,第533页,“ MySQL群集将所有索引列保留在主内存中”)。 有鉴于此,如果没有足够的内存(例如,巨大的数据库(> 100GB或1TB),且内存配置较低(例如2个数据节点,每个内存1GB)的服务器上运行)会发生什么?

4
对于外键设计,增加ID与全文键的权衡是什么?
在许多关系数据库设计中,其他表中都有引用的字段。 例如,考虑具有唯一用户名的用户表和存储地址数据的第二个表。 我会说的一种可能的布局是常用方法,因为我在大多数软件中都观察到了这种布局,就是使用像这样的自动增量ID: Table users =========== userId int primary auto_increment userName varchar unique Table adressdata ========== userId int references users.userId adress_type varchar // for example country address_value varchar // for example US (you probably also want to put a unique key on (userId,adress_type)) 这就是我过去经常这样做的方式,也是我在大多数情况下所看到的方式。 另一种方法是: Table users =========== userName varchar …
8 mysql 


2
使用MyISAM和InnoDB引擎的数据库的一致逻辑备份
我对使用MyISAM和InnoDB的MySQL数据库的逻辑备份有疑问。 该mysqldump实用程序支持以下两个选项: --single-transaction-通过在单个事务中转储所有表来创建一致的快照。daccess-ods.un.org daccess-ods.un.org仅适用于存储在支持多版本的存储引擎中的表(当前仅InnoDB支持)。option自动关闭--lock-tables。 -x, --lock -all-tables-锁定所有数据库中的所有表。这可以通过在整个转储期间使用全局读锁定来实现。自动关闭--single-transaction和--lock-tables。 对于InnoDB,我们需要 --single-transaction 对于MyISAM,我们需要-锁定表或全部锁定表(以防需要跨数据库一致性)。 那么,应该如何备份混合数据库(同时使用MyISAM和InnoDB引擎的数据库)? 编辑: 为了澄清起见,可以将问题改写为: lock- [all-] tables选项是否可以保证InnoDB表的一致性备份?

2
MySQL Auto_increment由2乘2
前几天,我安装了MySQL Workbench,访问了公司的数据库,并为自己创建了一个可使用的表。到目前为止,一切都很好。问题是,我注意到我的auto_increment由2递增2。例如: ID NAME 1 Paul 3 Jack 5 Louis 7 John ... 当我这样做时SHOW VARIABLES LIKE 'auto_inc%': 'auto_increment_increment', '2' 'auto_increment_offset', '1' 所以我尝试通过以下方式设置auto_increment_increment为1: SET @@auto_increment_increment=1 并再次验证后,SHOW VARIABLES LIKE 'auto_inc%'我确认结果“有效”: 'auto_increment_increment', '1' 'auto_increment_offset', '1' 但是我的ID 仍以2乘2递增。 第一次这样做,它运行良好,然后我关闭了MySQL Workbench,意识到再次打开它时,它又auto_increment_increment被设置为2。现在,我尝试再次执行此操作,但是它似乎不再起作用。 有人可以帮我吗? 谢谢你们。

3
删除所有重复项
我正在尝试删除所有重复项,但仅保留单个记录(较短的ID)。以下查询会删除重复项,但要进行大量迭代才能删除所有副本并保留原始副本。 DELETE FROM emailTable WHERE id IN ( SELECT * FROM ( SELECT id FROM emailTable GROUP BY email HAVING ( COUNT(email) > 1 ) ) AS q ) 它的MySQL。 编辑#1 DDL CREATE TABLE `emailTable` ( `id` mediumint(9) NOT NULL auto_increment, `email` varchar(200) NOT NULL default '', PRIMARY KEY (`id`) …
8 mysql  query  delete 

3
从星期四或一周中的任何一天开始,如何改善每周语句的SQL语句?
我是一个新手,我找不到在任何地方执行此操作的好方法。我有一个数据库表,其中包含一周中不同时间记录的统计信息。报告周从星期四开始。该表包含一个datestamp列(日期),该列存储记录数据的时间。 我需要提取给定一周的数据(报告周从星期四开始)。我写了以下查询: SELECT * FROM `table` WHERE 1 = CASE WHEN WEEKDAY(NOW()) = 0 THEN DATEDIFF(NOW(),`date`) BETWEEN -2 AND 4 WHEN WEEKDAY(NOW()) = 1 THEN DATEDIFF(NOW(),`date`) BETWEEN -1 AND 5 WHEN WEEKDAY(NOW()) = 2 THEN DATEDIFF(NOW(),`date`) BETWEEN -0 AND 6 WHEN WEEKDAY(NOW()) = 3 THEN DATEDIFF(NOW(),`date`) BETWEEN -6 AND 0 …
8 mysql  mariadb 

1
InnoDB死锁是INSERT / UPDATE / DELETE专有的吗?
我正在解决MySQL错误“尝试获取锁时发现死锁;尝试重新启动事务”。 我将不得不更新程序以允许死锁。该SELECT语句是否可能产生死锁错误?我知道这只是一个读锁,因此多个选择不会有问题,但是如果存在INSERT,UPDATE或DELETE语句(对于联接可能有子查询)和SELECT语句(对于联接或子查询可能)怎么办? 有没有可能是错误将在被抛出SELECT,而不是INSERT,UPDATE或DELETE。 如果您好奇的话,这里就是故事。

3
优化InnoDB默认设置
我查看了my.ini,并看到了各种默认设置。我的数据库在单个独立PC上运行。我想总体上优化InnoDB和MySQL的性能。磁盘空间没有限制。我应该更改哪些默认设置以优化性能,可靠性和可能的​​时间点备份[高可用性]。 已编辑 目前,每当我通过维护在MySQL Administrator上运行“优化表”时,它就会显示: 表不支持优化,而是执行重新创建+分析 在所有桌子上。我所有的表都是InnoDB,但是为什么它们不支持Optimize?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.