我的生产环境有6 GB MySQL InnoDB
个表,其中包含一些BIGINT SIGNED
列,但存储的值都大于0
,并且未来无法填充负值。如果将全部或部分转换为UNSIGNED
,是否会有明显改善的性能?在转换过程中,表格是否有可能会崩溃?
答案 0 :(得分:1)
这一点对你来说真的很重要吗?性能通常归结为您操纵的基本数据类型(例如VARCHAR
与INT
)而不是符号位。正如VARCHAR(20)
和VARCHAR(21)
表现基本相同,我确定您很难在BIGINT
和UNSIGNED BIGINT
之间找到可衡量的性能差异BIGINT
。
由于INT
可以存储天文数字巨大的值,因此您不太可能需要最后一点。 for (int attempts = 1; attempts <= 3; attempts++);
{
Random dice = new Random();
for(int n = 0; n <QArray.length; n++)
{
System.out.println("Question" + (n+1));
System.out.println(QArray[n]);
for(int m =0; m<3; m++)
{
String ans = scanner.nextLine();
int t = dice.nextInt(9) + 1;
int scoremarks = 5;
if (ans.equalsIgnoreCase(AArray[n]))
{
System.out.println("That is correct!\nYour score is:" + scoremarks + "\nWith virtual dice your total score is:" + (scoremarks +t));
break;
}
else
{
System.out.println("That is incorrect!\nYou got 0 Marks\nYour score is 0!");
}
可能会溢出21亿,预计有些应用程序会超过这个数字。有超过20亿的推文,超过20亿的Facebook帖子等等,但大多数应用程序很少会看到甚至超过。
不要担心自己可以衡量的问题。如果您认为存在问题,请衡量。如果您的测量结果不确定,您可以使用不同的方法再次尝试,或者让自己屈服于可能是您的直觉错误的事实。
这些天计算机的速度非常快,有些系统可能会将该数据库转储到内存中并在五秒钟内扫描一遍。如果您关注每一纳秒,首先要做的就是使用索引策略或您选择的文件系统,以及您的MySQL配置。