mysql频繁写入有什么优化方法没?
1.优化数据结构,每张数据表字段4-5个,加上索引。还可以将不同的种类的数据存入不同的数据库。减少单个数据库的压力。
2.写入数据只是存的问题,问题在于读取数据会变慢。建议使用缓存memcache,redis在向你招收哦。将用户数据存入内存,再次读取避免从数据库查找。
3.分布式,搞集群,扩大配置。
一条新闻的相关信息,来源,作者,正文,这些基本不变咯,除了正文可能文字比较多,其他的你可以存进缓存,正文的话,你这里可以把前面200字作为正文缩略,存进缓存。
mysqlinnodbcount(distinct)很慢,怎么优化?
1. 把你的day字段类型改为long型,在页面显示的时候在格式化成自己需要的样式;
2. 在day字段上建立索引;
3. 把ip_4表类型有InnoDB改为MyISAM,如果不需要事物支持的话,建议不要使用InnoDB。
mysql如何定期分析检查与优化表?
1. 对表进行优化 ( 优化表主要作用是消除删除或者更新造成的空间浪费)
2. 对表进行分析(分析关键字的分布, 分析并存储MyISAM和BDB表中键的分布)
3. 对表进行检查(检查表的错误,并且为MyISAM更新键的统计内容)
4. 对表进行修复(修复被破坏的MyISAM表)
图片来源:网络
分析表
ANALYZE TABLE 表名1 [,表名2…] ;
ANALYZE TABLE分析表的过程中,数据库系统会对表加一个只读锁。在分析期间,只能读取表中的记录,不能更新和插入记录。ANALYZE TABLE语句能够分析InnoDB和MyISAM类型的表。
对表的定期分析可以改善性能,且应该成为常规维护工作的一部分。因为通过更新表的索引信息对表进行分析,可改善数据库性能。
检查表
MySQL中使用CHECK TABLE语句来检查表。CHECK TABLE语句能够检查InnoDB和MyISAM类型的表是否存在错误。还可以检查视图是否存在错误.
check table 表名
优化表
随着MySQL的使用,包括BLOB和VARCHAR字节的表将变得比较繁冗,因为这些字段长度不同,对记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。像具有碎片的磁盘,会降低性能,需要整理,因此要优化。 (个人理解:当删除数据之后,原来的索引文件位置会空出来。等待新文件的插入,optimize命令就是整理索引文件)
针对MyISAM表,直接使用如下命令进行优化
optimize table table1[,table2][,table3]
myisam
innodb
Table does not support optimize, doing recreate + analyze instead。因为Innodb结构下删除了大量的行,此时索引会重组并且会释放相应的空间因此不必优化。
show table status like ‘表名’;
mysql数据库设计与优化,应不应该使用约束?
首先使用约束可以确保表数据的准确完整和唯一性;
其中常见的约束有
PRIMARY KEY, DEFAULT, UNIQUE, FOREIGN KEY,NOT NULL
一般情况下:DEFAULT 和 NOT NULL是会限制的,可以确保数据完整避免程序逻辑不够严谨造成的系统异常。但也不是绝对的,如果是后期优化还要考虑现有数据是否会造成冲突。
PRIMARY KEY 在大对数情况下会设置作为业务数据的唯一标识符。但一些关系表一般可以不设置。有人说PRIMARY KEY 必须自增,其实也未必。得就实际业务需求而定。
UNIQUE 约束可以保证一列或者多列组合值都是唯一的。可以提升这一列的搜索效率。但同样也得考虑历史数据的情况。
当然以上情况只是经验之谈,具体数据库的优化一定是根据实际的业务逻辑进行的。可能没有什么必须遵守不可违背的定律。
只要符合业务需求并且能够提升业务效率,就是合理的设计。