仓酷云

标题: MYSQL网站制作之创建MYSQL客户机程序的一样平常历程 [打印本页]

作者: 爱飞    时间: 2015-1-16 22:23
标题: MYSQL网站制作之创建MYSQL客户机程序的一样平常历程
如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
MySQL供应用C编程言语编写的客户机库,能够用它编写会见MySQL的客户机程序。这个库界说了使用程序编程接口,包含上面的有用程序:
■创建和停止与服务器会话的毗连办理例程。
■机关查询的例程,将例程发送到服务器,并处置了局。
■当其他CAPI挪用失利时,断定毛病正确缘故原由的形态和毛病呈报函数。
本章先容怎样用客户机库编写本人的程序。我们要记着的一些要点是,本人的程序与MySQL分发包中已有的客户机程序的分歧性,代码的模块性和可重用性。本章假定您晓得用C编程的一些常识,但其实不必定是专家。本章从复杂到庞大大略地开辟了一系列的客户机程序。这个历程是第一部分隔发了一个程序框架,该框架除与服务器毗连和断开之外不克不及作任何事变。如许做的缘故原由是,只管MySQL客户机程序是为分歧的目标而编写的,但它们都有一个配合点:即创立与服务器的毗连。
我们将用以下步骤来创建这个程序框架:
1.编写一些毗连和断开的扼要代码(客户机程序1)。
2.增添一些毛病反省(客户机程序2)。
3.使毗连代码模块化和可重用化(客户机程序3)。
4.增添猎取运转时毗连参数的才能(主机,用户,口令)(客户机程序4)。
这个框架通常为公道的,可使用它作为编写恣意数目的客户机程序的基本。开辟它今后,我们将暂不思索怎样处置各类成绩。起首,我们将会商怎样处置特定的硬编码的SQL语句,然后再开辟用于处置恣意语句的代码。在这以后,将查询处置的代码增添到客户机程序框架中,开辟另外一个程序(客户机程序5),它相似于mysql客户机程序。我们也将思索(并办理)一些通用的成绩,如“怎样猎取有关表的布局信息?”和“怎样在数据库中拔出图象?”只要在必要时,本章才会商客户机库的函数和数据范例。要想懂得一切函数和范例的列表,请参阅附录F“CAPI参考”。能够用这个附录作为利用客户机库任何部分的进一步的背景信息的参考。
样例程序能够由联机下载失掉,能够间接利用,而不用再键进它们。有关的引导,请参阅附录A“取得和安装软件”。
在那里寻觅样例
MySQL邮件清单的一个配合成绩就是“我在那里能够找到一些用C写的客户机样例?”。固然,这个谜底是“就在本书里!”。可是,很多人仿佛并没有思索的是MySQL分发包中包含了多少客户机程序(比方mysql、mysqladmin和mysqldump),这些年夜部分都是用C编写的。由于这个分发包能够很简单地以源程序情势利用,以是MySQL供应十分少的样例客户机代码。因而,假如您还没有如许做,找个工夫找到源程序分发包,在客户机目次中检察这些程序。MySQL客户机程序为共享软件,从那边能够为本人的程序自在地借用代码。
在本章供应的样例和MySQL分发包中包含的客户机程序之间,能够找到与本人编写程序时想做的事变相相似的代码。假如是如许,能够经由过程拷贝和修正已有的程序来从头利用代码。应当浏览本章,懂得客户机库是怎样事情的。但是,请记着,其实不老是必要本人编写噜苏的每件事变(您将注重到,在本章编写程序的会商中,代码的可重用性是目标之一)。经由过程利用其别人编好的程序,能够制止很多事情,那是最好的。
6.1创建客户机程序的一样平常历程
本节先容利用MySQL客户机库编译和毗连程序所包含的步骤。分歧的体系创建客户机程序的命令也有所分歧,大概必要略微修正一下这里先容的命令。但是,这里的申明是通用的,应当可以将它用于几近您编写的任何客户机程序中。
6.1.1基础的体系需求
当您用C编写MySQL客户程序时,明显将必要一个C编译程序。这里申明的样例利用gcc。除本人的源文件之外,还将必要以下程序:
■MySQL头文件。
■MySQL客户机库。
MySQL头文件和客户机库构成客户机编程的撑持程序。它们大概已安装到您的体系上。假如没有,应猎取它们。假如MySQL从源程序分发包或二进制分发包中安装,则客户机可编程的撑持程序应当已作为该处置的一部分安装了。假如MySQL是从RPM文件中安装的,
则除非安装了开辟程序RPM,不然就没有这类撑持。假如必要安装MySQL头文件和库,请参阅附录A。
6.1.2编译和毗连客户机程序
要想编译和毗连客户机程序,就必需指定MySQL头文件和客户机库的地位,由于它们一般不安装在编译程序和毗连程序缺省搜刮的地位。关于上面的样例,假定头文件和客户机库的地位为/usr/local/include/mysql和/usr/local/lib/mysql。要想告诉编译程序怎样寻觅MySQL头文件,则当将源文件编译为方针文件时,传送给它一个-I/usr/local/include/mysql参数。比方,可使用如许的命令:

要想告诉毗连程序在哪,能够找到客户机库和它的称号,当毗连方针文件发生一个可实行的二进制文件时,传送-L/usr/local/lib/mysql和-lmysqlclient参数,以下所示:

假如客户机程序包含多个文件,则一切方针文件的称号都要列在毗连命令上。假如毗连步骤招致不克不及找到必须的floor()函数的毛病,则经由过程在命令行的前面增添-lm,毗连到数学库:

大概还必要增添其他的库。比方,在Solaris上大概必要-lsocket-lnsl。
假如没有利用make创建程序,则倡议您懂得一下怎样举行,以便不用手工地键进很多创建程序的命令。假定有一个客户机程序myclient,包含两个源文件main.c和aux.c,及一个头文件myclient.h。一个复杂的Makefile创建这个程序的代码,以下所示:

假如是一个必要毗连到数学库的体系,则变动LIBS的值,并将-lm加到最初:LIBS=-L/usr/local/lib/mysql-lmysqlclient-lm
假如必要其他的库,如-lsocket和-lnsl,则也要将这些库加到LIBS中。利用Makefile,不管什么时候修正何源文件,只复杂地键进“make”就能够从头创建程序代码。那比键进一句长的gcc命令更简单,产生毛病更少。


使用DBaaS能让收入损失从其他业务上得到弥补,如软件更新和硬件管理。也许决定走DBaaS之路的客户可能会跳过解决方案提供商,尽管这个决策看起来有点短视。
作者: 爱飞    时间: 2015-1-19 10:08
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
作者: 深爱那片海    时间: 2015-1-28 06:06
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
作者: 若相依    时间: 2015-2-5 18:54
原来公司用过MYSQL自己也只是建个表写个SQL
作者: 若天明    时间: 2015-2-13 06:50
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者: 飘灵儿    时间: 2015-3-3 18:45
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
作者: 再见西城    时间: 2015-3-11 12:44
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
作者: 谁可相欹    时间: 2015-3-18 19:09
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
作者: 兰色精灵    时间: 2015-3-26 14:28
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2