免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 52506 | 回复: 41
打印 上一主题 下一主题

[MYSQL]简单叙述一下MYSQL的优化(一个面试题.每次没能完全答对。各位补充一下.) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-25 10:50 |只看该作者 |倒序浏览
一个面试题.每次没能完全答对。各位补充一下.或者发表自己的答案:cry:

现在大概列出如下:(忘各位补充)
1.数据库的设计
尽量把数据库设计的更小的占磁盘空间.
1).尽可能使用更小的整数类型.(mediumint就比int更合适).
2).尽可能的定义字段为not null,除非这个字段需要null.
3).如果没有用到变长字段的话比如varchar,那就采用固定大小的纪录格式比如char.
4).表的主索引应该尽可能的短.这样的话每条纪录都有名字标志且更高效.
5).只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。
6).所有数据都得在保存到数据库前进行处理。
7).所有字段都得有默认值。
8).在某些情况下,把一个频繁扫描的表分成两个速度会快好多。在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此。
2.系统的用途
1).尽量使用长连接.
2).explain 复杂的SQL语句。
3).如果两个关联表要做比较话,做比较的字段必须类型和长度都一致.
4).LIMIT语句尽量要跟order by或者 distinct.这样可以避免做一次full table scan.
5).如果想要清空表的所有纪录,建议用truncate table tablename而不是delete from tablename.
6).能使用STORE PROCEDURE 或者 USER FUNCTION的时候.
7).在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的indert快好多.
8).经常OPTIMIZE TABLE 来整理碎片.
9).还有就是date 类型的数据如果频繁要做比较的话尽量保存在unsigned int 类型比较快。
3.系统的瓶颈
1).磁盘搜索.
并行搜索,把数据分开存放到多个磁盘中,这样能加快搜索时间.
2).磁盘读写(IO)
可以从多个媒介中并行的读取数据。
3).CPU周期
数据存放在主内存中.这样就得增加CPU的个数来处理这些数据。
4).内存带宽
当CPU要将更多的数据存放到CPU的缓存中来的话,内存的带宽就成了瓶颈.

[ 本帖最后由 HonestQiao 于 2007-3-25 17:42 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
2 [报告]
发表于 2007-03-25 16:43 |只看该作者
说得好

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
3 [报告]
发表于 2007-03-25 17:44 |只看该作者
OReilly.High.Performance.MySQL

这本书不错。

论坛徽章:
0
4 [报告]
发表于 2007-03-26 10:22 |只看该作者
原帖由 HonestQiao 于 2007-3-25 17:44 发表
OReilly.High.Performance.MySQL

这本书不错。



提几个关键字吧.不要提这本书了。乔老大.

论坛徽章:
0
5 [报告]
发表于 2007-03-26 13:52 |只看该作者
太水了,都是照书上读的,呵呵,mysql优化无非就是分表,结构设计,索引的设计

数据结构整好来就是答案

论坛徽章:
0
6 [报告]
发表于 2007-03-26 14:29 |只看该作者
一般般

有些有相对性的,,不适合绝对情况

重头戏还是在底层这块。。。前台基本可以忽略。

一般写好,语法没问题,测试,语义没问题就可以。。。写的时间久了,就会有多种写法,测试下就知道哪个比较适合。

前台快,能快多少。。。

和系统整体设计,数据库设计来比,,这根本不算什么

论坛徽章:
0
7 [报告]
发表于 2007-03-26 16:15 |只看该作者
原帖由 wuwei517200 于 2007-3-26 13:52 发表
太水了,都是照书上读的,呵呵,mysql优化无非就是分表,结构设计,索引的设计

数据结构整好来就是答案



支持

论坛徽章:
0
8 [报告]
发表于 2007-03-26 16:19 |只看该作者
原帖由 yueliangdao0608 于 2007-3-25 10:50 发表
5).如果想要清空表的所有纪录,建议用truncate table tablename而不是delete from tablename.


我记得delete * from tablename 是直接把表删掉再重建一个同样结构的空表的,应该不慢吧。

论坛徽章:
0
9 [报告]
发表于 2007-03-26 18:42 |只看该作者
原帖由 wuwei517200 于 2007-3-26 13:52 发表
太水了,都是照书上读的,呵呵,mysql优化无非就是分表,结构设计,索引的设计

数据结构整好来就是答案


让你详细谈呢?

论坛徽章:
0
10 [报告]
发表于 2007-03-27 09:16 |只看该作者

回复 1楼 yueliangdao0608 的帖子

真是不明白中国公司招人的办法是否科学,好多工作岗位都是杀鸡用牛刀,鸡蛋里挑骨头。个人认为其实考察人的工作态度、为人处世,一句话人品可能会更好一点。不过想想也许这是发展过程必经的阶段,企业总比政府、事业单位更有效率,更注重业绩。
   记得刚去一家网络公司面试,题目是:一个小偷程序,提取亚虎的某些信息。但是正值php3,我就谈谈具体做法的步骤,谁知道哪个白痴面试官,一定要我现场写程序出来,给了一台不能上网的机器。我当时真实的想法:他想发现中国的爱因斯坦。

[ 本帖最后由 yuxiaqiao 于 2007-3-27 09:24 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP