很多站长朋友们都不太清楚phpmyisam,今天小编就来给大家整理phpmyisam,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 如何用php将exsle中的数据上传到myisam表中? 2、 php 面试必考题 mysql的MyISAM 和 InnoDB 的区别 3、 myisam和innodb怎么使用 4、 php+mysql怎么实现事务回滚,表是MyISAM类型的 5、 php+mssql 和 php+mysql 优点缺点 6、 想做个 网站 ,求一段PHP编程代码,PHP的MYSQL缓存怎么实现? 最好举个例子。 如何用php将exsle中的数据上传到myisam表中?1,mysql中的存储引擎如何设置?------------默认是myisam,建表的时候也指定,例如: create table test(id int)engine=innodb;
2,如果是将INNODB改成MYISAM怎样改?--------------------alter table test engine=myisam;
3,还有DOS中的MYSQL,怎样保存数据库,表等对象?-----------------在dos中执行 create database databasename; create table test(id int);这样就生成了库和表;对应的系统文件在mysql的安装目录的data下,数据库名对应一个文件夹。比如 create database testdb,那么就能在data目录下找到testdb目录;表等对象的文件要看具体的引擎,如果是myisam引擎,那么就会有三个文件,test.frm,test.myi,test.myd三个,innodb的话只有一个test.frm结构文件,数据和索引文件都在 ibdata1表空间里。
4,PHP如何和MYSQL连接?是否非要输入代码?有没有别的简单方法如UI式设置-------------------需要你写连接信息,网上给你找了个php连接mysql的例子,你参考下
<?php
$mysql_server_name='localhost'; //改成自己的mysql数据库服务器
$mysql_username='root'; //改成自己的mysql数据库用户名
$mysql_password='198791'; //改成自己的mysql数据库密码
$mysql_database='mydb'; //改成自己的mysql数据库名
$conn=mysql_connect ($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //从这句开始向下解释
$sql='insert into book (name,pwd) values ("ggg","ggg");';
//这是一个SQL语句: 向book表中插入一条记录
mysql_query($sql);
//执行SQL语句
mysql_select_db($mysql_database,$conn); //选择上面表所在的数据库(这一句应该在上面一句的前面执行)
$result=mysql_query($sql); //这一句完全是多余的,和上面的那一个是一样的!
mysql_close($conn); //关闭数据库连接
echo "Hello!操作成功!"; //显示提示信息
?>
php 面试必考题 mysql的MyISAM 和 InnoDB 的区别1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from
table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含
where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。MyISAM 是表所
innodb是行锁
5.LOAD TABLE FROM MASTER(从主负载表)操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update
table set num=1 where name like “"2%”
6.InnoDB 支持事物
选择存储引擎 根据实际情况选择。
一般情况下如果查询多建议使用myIsam 。
如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。
优化MYSQL数据库的方法:
1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM
2,使用join代替子查询
3,使用联合(UNION)来代替手动创建的临时表
4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)
5,适当建立索引(如何建立索引?索引的利与弊?)
6,优化sql语句
7,explain可以看到mysql执行计划
8,分表(垂直分表,水平分表?)
9,数据库主从
myisam和innodb怎么使用InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。MyIASM是IASM表的新版本,有如下扩展:二进制层次的可移植性。NULL列索引。对变长行比ISAM表有更少的碎片。支持大文件。更好的索引压缩。更好的键吗统计分布。更好和更快的auto_increment处理。以下是一些细节和具体实现的差别:1.InnoDB不支持FULLTEXT类型的索引。2.InnoDB中不保存表的具体行数,也就是说,执行selectcount(*)fromtable时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作是一样的。3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。4.DELETEFROMtable时,InnoDB不会重新建立表,而是一行一行的删除。5.LOADTABLEFROMMASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如updatetablesetnum=1wherenamelike“%aaa%”任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势.MySQL中MyISAM引擎与InnoDB引擎性能简单测试[硬件配置]CPU:AMD2500+(1.8G)内存:1G/现代硬盘:80G/IDE[软件配置]OS:WindowsXPSP2SE:PHP5.2.1DB:MySQL5.0.37Web:IIS6[MySQL表结构]CREATETABLE`myisam`(`id`int(11)NOTNULLauto_increment,`name`varchar(100)defaultNULL,`content`text,PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=gbk;CREATETABLE`innodb`(`id`int(11)NOTNULLauto_increment,`name`varchar(100)defaultNULL,`content`text,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=gbk;[数据内容]$name="heiyeluren";$content="MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:·MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。·MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。释:MEMORY存储引擎正式地被确定为HEAP引擎。·InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所有MySQL5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。·EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。";[插入数据-1](innodb_flush_log_at_trx_commit=1)MyISAM1W:3/sInnoDB1W:219/sMyISAM10W:29/sInnoDB10W:2092/sMyISAM100W:287/sInnoDB100W:没敢测试[插入数据-2](innodb_flush_log_at_trx_commit=0)MyISAM1W:3/sInnoDB1W:3/sMyISAM10W:30/sInnoDB10W:29/sMyISAM100W:273/sInnoDB100W:423/s[插入数据3](innodb_buffer_pool_size=1024M)InnoDB1W:3/sInnoDB10W:33/sInnoDB100W:607/s[插入数据4](innodb_buffer_pool_size=256M,innodb_flush_log_at_trx_commit=1,setautocommit=0)InnoDB1W:3/sInnoDB10W:26/sInnoDB100W:379/s[MySQL配置文件](缺省配置)#MySQLServerInstanceConfigurationFile[client]port=3306[mysql]default-character-set=gbk[mysqld]port=3306basedir="C:/mysql50/"datadir="C:/mysql50/Data/"default-character-set=gbkdefault-storage-engine=INNODBsql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"max_connections=100query_cache_size=0table_cache=256tmp_table_size=50Mthread_cache_size=8myisam_max_sort_file_size=100Gmyisam_max_extra_sort_file_size=100Gmyisam_sort_buffer_size=100Mkey_buffer_size=82Mread_buffer_size=64Kread_rnd_buffer_size=256Ksort_buffer_size=256Kinnodb_additional_mem_pool_size=4Minnodb_flush_log_at_trx_commit=1innodb_log_buffer_size=2Minnodb_buffer_pool_size=159Minnodb_log_file_size=80Minnodb_thread_concurrency=8【总结】可以看出在MySQL5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是innodb_flush_log_at_trx_commit这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交“SETAUTOCOMMIT=0”来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显的提升。基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。
php+mysql怎么实现事务回滚,表是MyISAM类型的你好。
MyISAM 根本就不支持事务。
所以没有办法,除非去改MYSQL的MYISAM存储引擎的源代码。
如果我的回答没能帮助您,请继续追问。
您也可以向我们团队发出请求.
会有更专业的人来为您解答。
php+mssql 和 php+mysql 优点缺点一、PHP+MySql
优点:
1) MySql是一个快速、多线程、多用户的SQL数据库服务器。
2) MySql的核心程序采用完全的多线程编程。
3)MySql可运行在不同的操作系统下。
4) MySql有一个非常灵活而且安全的权限和口令系统。
5) MySql支持ODBC for Windows。
6)MySql支持大型的数据库。
7) MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。
8) 强大的查询功能。
9)PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持。
缺点:
比较的难学;
MySQL不完全支持陌生的关键词;
MySQL也缺乏一些存储程序的功能;
使用缺省的ip端口,但是有时候这些ip也会被一些黑客闯入;
使用myisam配置,如果你不慎损坏数据库,结果可能会导致所有的数据丢失;
二、PHP+MsSql
优点:
上手容易; 兼容性良好; 利于构筑"敏捷性商务";
缺点:
只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。
并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限;
安全性方面,没有获得任何安全证书;
客户端支持及应用模式 ,是C/S结构,只支持windows客户,可以用ADO, DAO,OLEDB,
ODBC连接;
不是免费的;
数据不容易恢复;
想做个 网站 ,求一段PHP编程代码,PHP的MYSQL缓存怎么实现? 最好举个例子。数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化:
•query_cache_size/query_cache_type (global)
Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL 会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache 中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如 SQL语句的解析,优化器优化以及向存储引擎请求数据等),极大的提高性能。
当然,Query Cache 也有一个致命的缺陷,那就是当某个表的数据有任何任何变化,都会导致所有引用了该表的select语句在Query Cache 中的缓存数据失效。所以,当我们的数据变化非常频繁的情况下,使用Query Cache 可能会得不偿失。
Query Cache的使用需要多个参数配合,其中最为关键的是 query_cache_size 和 query_cache_type ,前者设置用于缓存 ResultSet 的内存大小,后者设置在何场景下使用 Query Cache。在以往的经验来看,如果不是用来缓存基本不变的数据的MySQL数据库,query_cache_size 一般 256MB 是一个比较合适的大小。当然,这可以通过计算Query Cache的命中率(Qcache_hits/(Qcache_hits+Qcache_inserts)*100))来进行调整。query_cache_type可以设置为0(OFF),1(ON)或者2(DEMOND),分别表示完全不使用query cache,除显式要求不使用query cache(使用sql_no_cache)之外的所有的select都使用query cache,只有显示要求才使用query cache(使用sql_cache)。
•binlog_cache_size (global)
Binlog Cache 用于在打开了二进制日志(binlog)记录功能的环境,是 MySQL 用来提高binlog的记录效率而设计的一个用于短时间内临时缓存binlog数据的内存区域。
一般来说,如果我们的数据库中没有什么大事务,写入也不是特别频繁,2MB~4MB是一个合适的选择。但是如果我们的数据库大事务较多,写入量比较大,可与适当调高binlog_cache_size。同时,我们可以通过binlog_cache_use 以及 binlog_cache_disk_use来分析设置的binlog_cache_size是否足够,是否有大量的binlog_cache由于内存大小不够而使用临时文件(binlog_cache_disk_use)来缓存了。
•key_buffer_size (global)
Key Buffer 可能是大家最为熟悉的一个 MySQL 缓存参数了,尤其是在 MySQL 没有更换默认存储引擎的时候,很多朋友可能会发现,默认的 MySQL 配置文件中设置最大的一个内存参数就是这个参数了。key_buffer_size 参数用来设置用于缓存 MyISAM存储引擎中索引文件的内存区域大小。如果我们有足够的内存,这个缓存区域最好是能够存放下我们所有的 MyISAM 引擎表的所有索引,以尽可能提高性能。
此外,当我们在使用MyISAM 存储的时候有一个及其重要的点需要注意,由于 MyISAM 引擎的特性限制了他仅仅只会缓存索引块到内存中,而不会缓存表数据库块。所以,我们的 SQL 一定要尽可能让过滤条件都在索引中,以便让缓存帮助我们提高查询效率。
•bulk_insert_buffer_size (thread)
和key_buffer_size一样,这个参数同样也仅作用于使用 MyISAM存储引擎,用来缓存批量插入数据的时候临时缓存写入数据。当我们使用如下几种数据写入语句的时候,会使用这个内存区域来缓存批量结构的数据以帮助批量写入数据文件:
insert … select …
insert … values (…) ,(…),(…)…
load data infile… into… (非空表)
•innodb_buffer_pool_size(global)
当我们使用InnoDB存储引擎的时候,innodb_buffer_pool_size 参数可能是影响我们性能的最为关键的一个参数了,他用来设置用于缓存 InnoDB 索引及数据块的内存区域大小,类似于 MyISAM 存储引擎的 key_buffer_size 参数,当然,可能更像是 Oracle 的 db_cache_size。简单来说,当我们操作一个 InnoDB 表的时候,返回的所有数据或者去数据过程中用到的任何一个索引块,都会在这个内存区域中走一遭。
和key_buffer_size 对于 MyISAM 引擎一样,innodb_buffer_pool_size 设置了 InnoDB 存储引擎需求最大的一块内存区域的大小,直接关系到 InnoDB存储引擎的性能,所以如果我们有足够的内存,尽可将该参数设置到足够打,将尽可能多的 InnoDB 的索引及数据都放入到该缓存区域中,直至全部。
我们可以通过 (Innodb_buffer_pool_read_requests – Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% 计算缓存命中率,并根据命中率来调整 innodb_buffer_pool_size 参数大小进行优化。
•innodb_additional_mem_pool_size(global)
这个参数我们平时调整的可能不是太多,很多人都使用了默认值,可能很多人都不是太熟悉这个参数的作用。innodb_additional_mem_pool_size 设置了InnoDB存储引擎用来存放数据字典信息以及一些内部数据结构的内存空间大小,所以当我们一个MySQL Instance中的数据库对象非常多的时候,是需要适当调整该参数的大小以确保所有数据都能存放在内存中提高访问效率的。
这个参数大小是否足够还是比较容易知道的,因为当过小的时候,MySQL 会记录 Warning 信息到数据库的 error log 中,这时候你就知道该调整这个参数大小了。
•innodb_log_buffer_size (global)
这是 InnoDB 存储引擎的事务日志所使用的缓冲区。类似于 Binlog Buffer,InnoDB 在写事务日志的时候,为了提高性能,也是先将信息写入 Innofb Log Buffer 中,当满足 innodb_flush_log_trx_commit 参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文件(或者同步到磁盘)中。可以通过 innodb_log_buffer_size 参数设置其可以使用的最大内存空间。
注:innodb_flush_log_trx_commit 参数对 InnoDB Log 的写入性能有非常关键的影响。该参数可以设置为0,1,2,解释如下:
0:log buffer中的数据将以每秒一次的频率写入到log file中,且同时会进行文件系统到磁盘的同步操作,但是每个事务的commit并不会触发任何log buffer 到log file的刷新或者文件系统到磁盘的刷新操作;
1:在每次事务提交的时候将log buffer 中的数据都会写入到log file,同时也会触发文件系统到磁盘的同步;
2:事务提交会触发log buffer 到log file的刷新,但并不会触发磁盘文件系统到磁盘的同步。此外,每秒会有一次文件系统到磁盘同步操作。
此外,MySQL文档中还提到,这几种设置中的每秒同步一次的机制,可能并不会完全确保非常准确的每秒就一定会发生同步,还取决于进程调度的问题。实际上,InnoDB 能否真正满足此参数所设置值代表的意义正常 Recovery 还是受到了不同 OS 下文件系统以及磁盘本身的限制,可能有些时候在并没有真正完成磁盘同步的情况下也会告诉 mysqld 已经完成了磁盘同步。
•innodb_max_dirty_pages_pct (global)
这个参数和上面的各个参数不同,他不是用来设置用于缓存某种数据的内存大小的一个参数,而是用来控制在 InnoDB Buffer Pool 中可以不用写入数据文件中的Dirty Page 的比例(已经被修但还没有从内存中写入到数据文件的脏数据)。这个比例值越大,从内存到磁盘的写入操作就会相对减少,所以能够一定程度下减少写入操作的磁盘IO。
但是,如果这个比例值过大,当数据库 Crash 之后重启的时间可能就会很长,因为会有大量的事务数据需要从日志文件恢复出来写入数据文件中。同时,过大的比例值同时可能也会造成在达到比例设定上限后的 flush 操作“过猛”而导致性能波动很大。
上面这几个参数是 MySQL 中为了减少磁盘物理IO而设计的主要参数,对 MySQL 的性能起到了至关重要的作用。
关于phpmyisam的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。