相关疑难解决方法(0)

如何为列[innodb specific]选择优化的数据类型?

我正在学习数据库的数据类型的用法.

例如:

  • 哪个更适合电子邮件?varchar [100],char [100]或tinyint(开玩笑)
  • 哪个用户名更好?我应该使用int,bigint还是varchar?说明.我的一些朋友说,如果我们使用int,bigint或其他数字数据类型,它会更好(facebook会这样做).像u = 123400023指的是用户123400023,而不是user = thenameoftheuser.由于数字需要较少的时间来获取.
  • 哪个更适合电话号码?帖子(如博客或公告)?或者也许是日期(我使用日期时间)?也许有些人做了想分享的研究.
  • 产品价格(我用十进制(11,2),不知道你们的人)?
  • 或者你想到的任何其他东西,比如"我使用串行数据类型为blablabla".

为什么我要特别提到innodb?

除非您使用InnoDB表类型(请参阅第11章"高级MySQL"以获取更多信息),否则CHAR列的访问速度比VARCHAR快.

Inno db有一些我不知道的差异.我从这里读到.

mysql database database-design innodb

16
推荐指数
1
解决办法
3198
查看次数

防止PHP脚本在运行时耗尽所有资源?

我有一个每天的cron工作,大约需要5分钟才能运行(它会收集一些数据,然后进行各种数据库更新).它工作正常,但问题是,在这5分钟内,网站完全没有响应任何请求,HTTP或其他.

看起来cron作业脚本在运行时会占用所有资源.我在PHP文档中找不到任何帮助我的东西 - 如何让脚本知道只用掉50%的可用资源?我宁愿让它运行10分钟并在此期间让用户可以使用该站点,而不是让它运行5分钟并且每天都有用户抱怨停机时间.

我确信我可以想出一种方法来配置服务器本身来实现这一点,但我更喜欢在PHP中有一个内置的方法来解决这个问题.在那儿?

或者,作为计划B,我们可以在脚本运行时将所有用户请求重定向到静态停机页面(与现在发生的情况相反,这是页面无限期加载或最终超时).

php

15
推荐指数
3
解决办法
3224
查看次数

澄清InnoDB引擎中的行级锁定与MySQL数据库中MyISAM引擎中的表级锁定之间的区别

我们假设有两个用户尝试按以下顺序访问数据库中名为"comments"的表:

  1. User1正在为id = 10的记录进行更新

    更新注释SET comment ="Hello World"WHERE id = 10

  2. User2正在为同一个表注释的所有行进行选择

    SELECT*FROM评论

我想讨论以下案例之间的区别:

  1. 如果表的引擎是MyISAM:Update查询将锁定整个表,该表将对select查询进行排队,直到行的更新完成,然后执行该表将阻止任何用户从该表中询问任何内容,直到更新为止.完了.
  2. 如果表的引擎是InnoDB:更新查询将锁定更新的行.

我想知道这个锁是如何影响选择查询的?

我的意思是,如果选择向数据库询问注释表的整个记录​​,并发现其中一个(id = 10)被锁定,数据库是否会再次对选择查询进行排队,直到更新完成?

如果是,那两个引擎之间有什么区别?

如果不是我想说我的网站上面有相同的情况,甚至我将我的表引擎从MyISAM更改为InnoDB,但是当有更新或插入查询时仍然出现排队任何请求的问题.

对这种情况的任何解释都会非常有用.先感谢您

mysql sql database performance innodb

14
推荐指数
1
解决办法
4643
查看次数

我应该为我的MySQL数据库使用MyISAM或InnoDB表吗?

我的数据库中有以下两个表(索引完整,因为它将基于我使用的引擎):

表格1:

CREATE TABLE `primary_images` (
  `imgId` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
  `imgTitle` varchar(255) DEFAULT NULL,
  `view` varchar(45) DEFAULT NULL,
  `secondary` enum('true','false') NOT NULL DEFAULT 'false',
  `imgURL` varchar(255) DEFAULT NULL,
  `imgWidth` smallint(6) DEFAULT NULL,
  `imgHeight` smallint(6) DEFAULT NULL,
  `imgDate` datetime DEFAULT NULL,
  `imgClass` enum('jeans','t-shirts','shoes','dress_shirts') DEFAULT NULL,
  `imgFamily` enum('boss','lacoste','tr') DEFAULT NULL,
  `imgGender` enum('mens','womens') NOT NULL DEFAULT 'mens',
  PRIMARY KEY (`imgId`),
  UNIQUE KEY `imgDate` (`imgDate`)
)
Run Code Online (Sandbox Code Playgroud)

表2:

CREATE TABLE `secondary_images` (
  `imgId` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
  `primaryId` smallint(6) unsigned …
Run Code Online (Sandbox Code Playgroud)

mysql database database-design myisam innodb

11
推荐指数
1
解决办法
7369
查看次数

InnoDB与MyISAM插入查询时间

我有一个大的MySQL表(~10万行,6.5G)我用它来读写.这是MyISAM,由于MyISAM对写入的所有表锁定,我得到了很多锁.

我决定尝试转移到推荐用于读/写表的InnoDB,它只锁定写入时的特定行.

转换后,我测试了插入语句,结果表明它在InnoDB表中比在MyISAM表中多花了15倍(从0.1秒到1.5秒).这是为什么?

我还没有为InnoDB配置任何东西,并且还计划添加分区,但这个数字对我来说仍然是出乎意料的.当然表是相同的,相同的索引等.

根据要求提供的其他信息:

2个索引.primary是Big INT类型的data_id,varchar(255)类型的非唯一user_id.

插入大约有150行,具有相同的user_id.

索引大小:MyISAM为200 MB,InnoDB为400 MB

database optimization mysqli myisam innodb

9
推荐指数
1
解决办法
2235
查看次数

将MyISAM转换为InnoDB.有利?后果是什么?

我们正在运行一个社交网站,记录每个成员的行为(包括访问其他成员的页面); 这涉及到db的大量写入.这些操作存储在MyISAM表中,并且由于某些东西开始对CPU征税,我首先想到的是MyISAM的表锁定会对CPU造成这种压力.

  • 只有读取和写入,没有对此表的更新.我认为这个表的读写之间的平衡大约是50/50,因此InnoDB会是更好的选择吗?
  • 如果我想将表更改为InnoDB并且我们不使用外键约束,事务或全文索引 - 我是否需要担心什么?

mysql myisam innodb

7
推荐指数
1
解决办法
3637
查看次数

为什么使用InnoDB而不是MySIAM

可能重复:
我是否应该总是喜欢MySQL InnoDB而不是MyISAM?

在什么条件下应该使用InnoDB而不是MyISAM?我见过一些MySQL优化测试,其中MyISAM被证明更快.我的所有表都是MyISAM,为什么要切换到InnoDB?

mysql database myisam innodb

6
推荐指数
2
解决办法
3071
查看次数

从MyISAM迁移到InnoDB

我对这个主题进行了一些搜索并找到了一些结果.但是,我正在寻找是否有人知道或可能指向一些真实或有信誉的案例研究,详细说明从MyISAM迁移到InnoDB的好处(特别是性能).

很好,如果你能指出任何关于MySQL版本5.5及以上,其中InnoDb作为默认存储引擎.

mysql myisam innodb

6
推荐指数
2
解决办法
4393
查看次数

社交应用程序的数据库设计和优化注意事项

通常的情况.我有一个简单的应用程序,允许人们上传照片和关注其他人.结果,每个用户将具有诸如"墙"或"活动馈送"之类的东西,其中他或她看到从他/她的朋友(他或她跟随的人)上传的最新照片.

大多数功能都易于实现.然而,当涉及到这个历史活动源时,由于纯粹的性能原因,事情很容易变成混乱.

我在这里遇到了以下困境:我可以轻松地将活动源设计为数据库的规范化部分,这将节省我的写入周期,但是在为每个用户选择这些结果时会极大地增加复杂性(对于每个上传的每张照片)在某个时间段内,选择一个特定的号码,我关注的上传者/我关注的每个人,选择他的照片)

优化选项可以是引入一系列阈值约束,例如,允许我根据上次上传的日期对我关注的人进行排序,甚至排除一些,以节省周期,并为每个用户,仅选择5个(例如)上次上传的照片.

第二种方法是为活动源引入完全非规范化的架构,其中每一行代表我的一个关注者的通知.这意味着每次上传照片时,DB都会在这个"drop bucket"中放入n行,n表示我遵循的人数,即大量的写入周期.但是,如果我有这样的表,我可以轻松地应用一些优化技术,例如聪明的索引,以及修剪早于特定时间段(队列)的条目.

然而,第三种方法可以想到,甚至是一种较少非规范化的模式,其中服务器端应用程序将从数据库中获取部分复杂性.我看到一些社交应用程序(如friendfeed)严重依赖于序列化对象(如DB中的JSON对象)的存储.

我当然还在掌握可扩展数据库设计的技巧,所以我确信有许多我错过或仍在学习的东西.如果有人能给我一个正确方向的光,我将非常感激.

mysql database database-design scalability query-optimization

5
推荐指数
3
解决办法
1205
查看次数

如何使用 Laravel over Model 创建新的空数据库

有什么方法可以使用LaravelCodeBehind 创建新数据库吗?我的意思是,我无法使用php artisan或类似的东西。只是因为我想为每个注册用户创建一个数据库。之后我就可以使用migration. 我在用着Laravel 5.2。已经感谢您的支持了。

php database migration laravel

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